广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android入门之Gallery用法实例解析

    2018-04-25 21:46:34 次阅读 稿源:互联网
    广告

    本文实例介绍的Android的Gallery控件是个很不错的看图控件,可以大大减轻开发者对于看图功能的开发,并且效果也很美观。本文实例中的Gallery的用法,主要实现用反射机制来动态读取资源中的图片。

    该实例代码运行的效果图如下:

     

    main.xml源码如下:

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:orientation="vertical"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   > <Gallery android:id="@+id/gallery" android:layout_height="fill_parent" android:layout_width="fill_parent"></Gallery> </LinearLayout>

    Java程序源码如下:

    package com.testImageView;  import java.lang.reflect.Field; import java.util.ArrayList;  import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.AdapterView.OnItemClickListener;  public class testImageView extends Activity {   private Gallery mGallery;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);          mGallery = (Gallery)findViewById(R.id.gallery);     try {       mGallery.setAdapter(new ImageAdapter(this));     } catch (IllegalArgumentException e) {       // TODO Auto-generated catch block       e.printStackTrace();     } catch (IllegalAccessException e) {       // TODO Auto-generated catch block       e.printStackTrace();     }     mGallery.setOnItemClickListener(new OnItemClickListener() {       public void onItemClick(AdapterView parent, View v, int position, long id) {         testImageView.this.setTitle(String.valueOf(position));       }     });   }      /*    * class ImageAdapter is used to control gallery source and operation.    */   private class ImageAdapter extends BaseAdapter{     private Context mContext;     private ArrayList<Integer> imgList=new ArrayList<Integer>();     private ArrayList<Object> imgSizes=new ArrayList<Object>();     public ImageAdapter(Context c) throws IllegalArgumentException, IllegalAccessException{       mContext = c;              //用反射机制来获取资源中的图片ID和尺寸       Field[] fields = R.drawable.class.getDeclaredFields();       for (Field field : fields)       {         if (!"icon".equals(field.getName()))//除了icon之外的图片         {             int index=field.getInt(R.drawable.class);           //保存图片ID           imgList.add(index);           //保存图片大小           int size[]=new int[2];           Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index);           size[0]=bmImg.getWidth();size[1]=bmImg.getHeight();           imgSizes.add(size);         }       }     }     @Override     public int getCount() {       // TODO Auto-generated method stub        return imgList.size();     }      @Override     public Object getItem(int position) {       // TODO Auto-generated method stub        return position;     }      @Override     public long getItemId(int position) {       // TODO Auto-generated method stub        return position;     }      @Override     public View getView(int position, View convertView, ViewGroup parent) {       // TODO Auto-generated method stub        ImageView i = new ImageView (mContext);       //从imgList取得图片ID       i.setImageResource(imgList.get(position).intValue());       i.setScaleType(ImageView.ScaleType.FIT_XY);       //从imgSizes取得图片大小       int size[]= new int[2];       size=(int[]) imgSizes.get(position);       i.setLayoutParams(new Gallery.LayoutParams(size[0], size[1]));       return i;     }        }; }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告