实例4:幻灯片式图片浏览器

来源:互联网 发布:爱淘宝怎么开店 编辑:程序博客网 时间:2024/05/21 08:03

1、布局文件,一个图像切换器ImageSwitcher,一个画廊视图Gallery

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center_horizontal"    android:id="@+id/llayout"><ImageSwitcher    android:id="@+id/imageSwitcher1"    android:layout_weight="2"    android:paddingTop="30px"    android:layout_width="wrap_content"    android:layout_height="wrap_content"></ImageSwitcher><Gallery     android:id="@+id/gallery1"    android:spacing="5px"    android:layout_weight="1"    android:unselectedAlpha="0.6"    android:layout_width="match_parent"    android:layout_height="wrap_content"/></LinearLayout>

2、在主活动MainAcitivity中,定义一个用于保存要显示图片id的数组和一个用于显示原始尺寸的图像切换器

private int[] imageId = new int[]{R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04};//定义并初始化保存图片id的数组private ImageSwitcher imageSwitcher;//声明一个图像切换器对象

3、在主活动的onCreate()方法中,获取在布局文件中添加控件

Gallery gallery = (Gallery)findViewById(R.id.gallery1);//获取Gallery组件        imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);//获取图像切换器

4、为图像切换器设置淡入淡出的动画效果,然后为其设置一个ImageSwitcher.ViewFactory对象,并重写makeView()方法,最后为图像切换器设置默认显示的图像

//设置动画效果        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置淡入动画        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置淡出动画        imageSwitcher.setFactory(new ViewFactory() {@Overridepublic View makeView() {ImageView imageView = new ImageView(MainActivity.this);//实例化一个ImageView类的对象imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//设置保持纵横比居中缩放图像imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));return imageView;//返回imageView对象}});

5、创建BaseAdapter类的对象,并重写其中的getView()、getItemId()、getItem()和getCount()方法,其中最重要的是重写getView()方法来设置显示图片的样式

BaseAdapter adapter = new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView;//声明ImageView对象if(convertView == null){imageView = new ImageView(MainActivity.this);//实例化ImageView的对象imageView.setScaleType(ImageView.ScaleType.FIT_XY);//设置缩放方式imageView.setLayoutParams(new Gallery.LayoutParams(180,135));//styleable不知道什么鬼<span style="white-space:pre"></span>//TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);<span style="white-space:pre"></span>//imageView.setBackground(typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0));imageView.setPadding(5, 0, 5, 0);//设置ImageView的内边距}else{imageView = (ImageView)convertView;}imageView.setImageResource(imageId[position]);//为ImageView设置要显示的图片return imageView;//返回ImageView}/** * 功能:获取当前选项的id */@Overridepublic long getItemId(int position) {return position;}/** * 功能:获取当前选项 */@Overridepublic Object getItem(int position) {return position;}/** * 功能:获得数量 */@Overridepublic int getCount() {return imageId.length;}};

6、将步骤5中创建的适配器与Galery关联,并且选中中间的图片,为了将用户选择的图片显示到图像切换器中,还需要为Gallery添加OnItemSelectedListener事件监听器,再重写onItemSelected()方法,将选中的图片显示到图像切换器中

gallery.setAdapter(adapter);//将适配器与Gallery关联gallery.setSelection(imageId.length/2);//选中中间的图片gallery.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {imageSwitcher.setImageResource(imageId[position]);//显示选中的图片}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {}});


0 0
原创粉丝点击