首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

利用Gallery跟ImageView实现图片浏览器

2013-02-18 
利用Gallery和ImageView实现图片浏览器首先,先看一下实现的截图:如图所示,其中布局的第一个控件是Gallery,

利用Gallery和ImageView实现图片浏览器

首先,先看一下实现的截图:

利用Gallery跟ImageView实现图片浏览器

如图所示,

其中布局的第一个控件是Gallery,显示的图片滑动浏览,这里用到一个继承自BaseAdapter的类对象,用于填充和显示Gallery中的内容;

布局的第二个控件是ImageView,当用户滑动Gallery时,显示其中的图片,这其中实现了两个重载方法

1.当用户点击Gallery的图片资源时,以Toast的形式告诉用户点击的是哪一幅图片,实现的代码如下:

public class EX04_10 extends Activity {     /*建构一Integer array并取得预加载Drawable的图片id*/   private Integer[] myImageIds = { R.drawable.photo1, R.drawable.photo2,       R.drawable.photo3, R.drawable.photo4,       R.drawable.photo5, R.drawable.photo6, };      private ImageView imageView;  /** Called when the activity is first created. */   @Override  public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    setContentView(R.layout.main);         /*透过findViewById取得*/     Gallery g = (Gallery) findViewById(R.id.mygallery);    imageView=(ImageView)findViewById(R.id.imageview);        /*新增一ImageAdapter并设定给Gallery对象*/    g.setAdapter(new ImageAdapter(this));         /*设定一个itemclickListener并Toast被点选图片的位置*/     g.setOnItemClickListener(new OnItemClickListener() {       public void onItemClick(AdapterView<?> parent, View v, int position, long id) {         Toast.makeText(EX04_10.this, getString(R.string.my_gallery_text_pre)             + position            + getString(R.string.my_gallery_text_post), Toast.LENGTH_SHORT).show();        }      });        g.setOnItemSelectedListener(new OnItemSelectedListener()    {      @Override      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,          long arg3)      {        // TODO Auto-generated method stub        imageView.setImageResource(myImageIds[arg2]);              }      @Override      public void onNothingSelected(AdapterView<?> arg0)      {        // TODO Auto-generated method stub              }    });    }      /*改写BaseAdapter自定义一ImageAdapter class*/   public class ImageAdapter extends BaseAdapter {        int mGalleryItemBackground;    private Context mContext;         /*ImageAdapter的建构子*/     public ImageAdapter(Context c) {      mContext = c;       /* 使用在res/values/attrs.xml中的定义 * 的Gallery属性.*/       TypedArray a = obtainStyledAttributes(R.styleable.Gallery);      /*取得Gallery属性的Index id*/       mGalleryItemBackground = a.getResourceId( R.styleable.Gallery_android_galleryItemBackground, 0);      /*让对象的styleable属性能够反复使用*/       a.recycle();       }         /*一定要重写的方法getCount,传回图片数目*/     public int getCount() {       return myImageIds.length;      }         /*一定要重写的方法getItem,传回position*/     public Object getItem(int position) {       return position;       }         /*一定要重写的方法getItemId,传回position*/     public long getItemId(int position) {      return position;       }         /*一定要重写的方法getView,传回一View对象*/     public View getView(int position, View convertView, ViewGroup parent) {       /*产生ImageView对象*/      ImageView i = new ImageView(mContext);       /*设定图片给imageView对象*/       i.setImageResource(myImageIds[position]);       /*重新设定图片的宽高*/      i.setScaleType(ImageView.ScaleType.FIT_XY);       /*重新设定Layout的宽高*/       i.setLayoutParams(new Gallery.LayoutParams(136, 110));      /*设定Gallery背景图*/       i.setBackgroundResource(mGalleryItemBackground);       /*传回imageView物件*/ return i;      }   }     }


热点排行