如IPhone拖动相片特效(Gallery画廊)
新建一个继承Activity类的GalleryActivity,并设置布局文件为:gallery.xml。
首先在gallery布局文件中添加一个Gallery组件:
<Gallery android:id="@+id/gallery_g01" android:layout_width="fill_parent" android:layout_height="wrap_content" /> |
而后在Activity中获取到这个组件。
而使用Gallery最主要的是为其设置一个适配器,这里我们自己定义一个继承BaseAdapter类的GalleryAdapter类。里面覆写几个父类方法。
package lyx.feng.simpletextdemo;
import java.util.List;
import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ImageView.ScaleType;
public class GalleryAdapter extends BaseAdapter { private List<Integer> images = null; private Context mContext = null;
public GalleryAdapter(Context mContext, List<Integer> images) { // 在构造方法中初始化属性 this.images = images; this.mContext = mContext; }
@Override public int getCount() { return images.size(); }
@Override public Object getItem(int position) { return images.get(position); }
@Override public long getItemId(int position) { return position; }
@Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(mContext); imageView.setImageResource(images.get(position)); imageView.setScaleType(ScaleType.FIT_XY); return imageView; }
}
|
接下来在主方法中通过反射得到图片:
public List<Integer> getImageResource(String startWith) { List<Integer> temp = new ArrayList<Integer>(); Field fields[] = R.drawable.class.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { if (fields[i].getName().startsWith(startWith)) { try { temp.add(fields[i].getInt(R.drawable.class)); } catch (Exception e) { e.printStackTrace(); } } } return temp; } |
最后为Gallery设置定义好的适配器
this.gallery = ( this.images = getImageResource("icon_"); this.gallery.setAdapter(new GalleryAdapter(this, images)); |
运行结果: