1 ImageSwitcher是图片切换的控件,它能实现图片切换时的动画效果,包括图片导入效果、图片消失效果等等。
Android系统提供了许多不同的动画效果供我们选择。
2 TypedArray obtainStyledAttributes 作用就是从我们自己定义的attr.xml读取所需信息
3 Gallery 组件的作用是提供图片的缩图功能,它可以将好多的图片排列成一列让使用者浏览和点选,
它也会随着使用者的操作来自动转换图像的位置
代码:
1 Activity
public class Gallery2Activity extends Activity implements ViewFactory,OnItemClickListener { private ImageSwitcher imageSwitcher; private Gallery gallery; //保存图片的数组 int[] imageIds = new int[] { R.drawable.beibei, R.drawable.huanhuan, R.drawable.jingjing, R.drawable.nini, R.drawable.yingying }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置窗体无标题 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_gallery2); // 得到组件 imageSwitcher = (ImageSwitcher) this.findViewById(R.id.imageSwitcher1); imageSwitcher.setFactory(this); imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); gallery = (Gallery) this.findViewById(R.id.gallery1); gallery.setAdapter(new ImageAdapter()); //设置默认选择的图片 gallery.setSelection(imageIds.length/2); //注册事件监听器 gallery.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adapterview, View view, int postion, long id) { imageSwitcher.setImageResource(imageIds[postion]); } // 重写视图工厂中的makeView方法,对ImageSwitcher显示的ImageView对象进行了设置 @Override public View makeView() { ImageView imageView = new ImageView(this); imageView.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); return imageView; } /** * 负责产生gallery中的图片 */ private class ImageAdapter extends BaseAdapter { int mGalleryItemBackground;; public ImageAdapter(){ //获取自定义的背景属性值 TypedArray typedArray=obtainStyledAttributes(R.styleable.HelloGallery); mGalleryItemBackground=typedArray.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground, 0); typedArray.recycle(); //必须调用的方法 } // 返回图片的个数,比如你想得到图片的个数 @Override public int getCount() { return imageIds.length; } @Override public Object getItem(int position) { return imageIds[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(Gallery2Activity.this); // 设置imageView中的图像资源 imageView.setImageResource(imageIds[position]); /*// 设置图像大小尺寸自适应 imageView.setAdjustViewBounds(true);*/ imageView.setBackgroundResource(mGalleryItemBackground); return imageView; } } }
2 页面布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageSwitcher android:id="@+id/imageSwitcher1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" > </ImageSwitcher> <Gallery android:id="@+id/gallery1" android:layout_width="fill_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:background="#55000000" android:spacing="10dp" /> </RelativeLayout>
3 自定义背景属性 values中的items.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="HelloGallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>