本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!
上次讲了如何使用Gallery控件,这次就讲Gallery 与ImageSwitcher的结合使用,本文实现一个简单的浏览图片的功能。先贴出程序运行截图:
除了Gallery可以拖拉切换图片,我在ImageSwitcher控件加入了setOnTouchListener事件实现,使得ImageSwitcher也可以在拖拉中切换图片。本例子依然使用JAVA的反射机制来自动读取资源中的图片。
main.xml的源码如下:
- xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android=""
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <ImageSwitcher android:id="@+id/switcher"
- android:layout_width="match_parent" android:layout_height="match_parent"/>
-
- <Gallery android:id="@+id/gallery"
- android:background="#55000000"
- android:layout_width="match_parent"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
-
- android:gravity="center_vertical"
- android:spacing="16dp" android:layout_height="100dp"/>
- RelativeLayout>
-
程序的源码如下:
- package com.testImageView;
- import java.lang.reflect.Field;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.content.Context;
- import android.os.Bundle;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnTouchListener;
- import android.view.ViewGroup;
- import android.view.animation.AnimationUtils;
- import android.widget.AdapterView;
- import android.widget.BaseAdapter;
- import android.widget.Gallery;
- import android.widget.ImageSwitcher;
- import android.widget.ImageView;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.Gallery.LayoutParams;
- import android.widget.ViewSwitcher.ViewFactory;
- public class testImageView extends Activity implements ViewFactory {
- private ImageSwitcher is;
- private Gallery gallery;
- private int downX,upX;
- private ArrayList imgList=new ArrayList();
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- Field[] fields = R.drawable.class.getDeclaredFields();
- for (Field field : fields)
- {
- if (!"icon".equals(field.getName()))
- {
- int index = 0;
- try {
- index = field.getInt(R.drawable.class);
- } catch (IllegalArgumentException e) {
-
- e.printStackTrace();
- } catch (IllegalAccessException e) {
-
- e.printStackTrace();
- }
-
- imgList.add(index);
- }
- }
-
-
- is = (ImageSwitcher) findViewById(R.id.switcher);
- is.setFactory(this);
- is.setInAnimation(AnimationUtils.loadAnimation(this,
- android.R.anim.fade_in));
- is.setOutAnimation(AnimationUtils.loadAnimation(this,
- android.R.anim.fade_out));
- is.setOnTouchListener(new OnTouchListener(){
-
-
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if(event.getAction()==MotionEvent.ACTION_DOWN)
- {
- downX=(int) event.getX();
- return true;
- }
- else if(event.getAction()==MotionEvent.ACTION_UP)
- {
- upX=(int) event.getX();
- int index=0;
- if(upX-downX>100)
- {
-
- if(gallery.getSelectedItemPosition()==0)
- index=gallery.getCount()-1;
- else
- index=gallery.getSelectedItemPosition()-1;
- }
- else if(downX-upX>100)
- {
-
- if(gallery.getSelectedItemPosition()==(gallery.getCount()-1))
- index=0;
- else
- index=gallery.getSelectedItemPosition()+1;
- }
-
- gallery.setSelection(index, true);
- return true;
- }
- return false;
- }
-
- });
-
-
- gallery = (Gallery) findViewById(R.id.gallery);
- gallery.setAdapter(new ImageAdapter(this));
- gallery.setOnItemSelectedListener(new OnItemSelectedListener(){
- @Override
- public void onItemSelected(AdapterView> arg0, View arg1,
- int position, long arg3) {
- is.setImageResource(imgList.get(position));
- }
- @Override
- public void onNothingSelected(AdapterView> arg0) {
-
- }
-
- });
- }
-
- @Override
- public View makeView() {
- ImageView i = new ImageView(this);
- i.setBackgroundColor(0xFF000000);
- i.setScaleType(ImageView.ScaleType.CENTER);
- i.setLayoutParams(new ImageSwitcher.LayoutParams(
- LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
- return i;
- }
- public class ImageAdapter extends BaseAdapter {
- public ImageAdapter(Context c) {
- mContext = c;
- }
- public int getCount() {
- return imgList.size();
- }
- public Object getItem(int position) {
- return position;
- }
- public long getItemId(int position) {
- return position;
- }
- public View getView(int position, View convertView, ViewGroup parent) {
- ImageView i = new ImageView(mContext);
- i.setImageResource(imgList.get(position));
- i.setAdjustViewBounds(true);
- i.setLayoutParams(new Gallery.LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- return i;
- }
- private Context mContext;
- }
-
- }
阅读(1080) | 评论(0) | 转发(0) |