GVKun编程网logo

Android入门之Gallery+ImageSwitcher用法实例解析(android imageswitcher)

21

本文将介绍Android入门之Gallery+ImageSwitcher用法实例解析的详细情况,特别是关于androidimageswitcher的相关信息。我们将通过案例分析、数据研究等多种方式,帮

本文将介绍Android入门之Gallery+ImageSwitcher用法实例解析的详细情况,特别是关于android imageswitcher的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Android Gallery ImageSwitcher 求助....、android Gallery 与 imageView 滑动冲突问题解决方法、android Gallery与imageView 滑动冲突问题解决方法、Android ImageSwitcher 实现按钮的 3d 旋转效果的知识。

本文目录一览:

Android入门之Gallery+ImageSwitcher用法实例解析(android imageswitcher)

Android入门之Gallery+ImageSwitcher用法实例解析(android imageswitcher)

继上一篇介绍了如何使用gallery控件之后,本文就来讲一下gallery 与ImageSwitcher的结合使用。本文所述实例代码将实现一个简单的浏览图片的功能。

先贴出程序运行截图如下:

除了gallery可以拖拉切换图片,我在ImageSwitcher控件加入了setonTouchListener事件实现,使得ImageSwitcher也可以在拖拉中切换图片。本例子依然使用JAVA的反射机制来自动读取资源中的图片。

main.xml的源码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/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>

Java程序的源码如下:

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<Integer> imgList=new ArrayList<Integer>();//图像ID
  
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 // Todo Auto-generated method stub
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
    //用反射机制来获取资源中的图片ID
   Field[] fields = R.drawable.class.getDeclaredFields();
   for (Field field : fields)
   {
   if (!"icon".equals(field.getName()))//除了icon之外的图片
   { 
    int index = 0;
  try {
   index = field.getInt(R.drawable.class);
  } catch (IllegalArgumentException e) {
   // Todo Auto-generated catch block
   e.printstacktrace();
  } catch (illegalaccessexception e) {
   // Todo Auto-generated catch block
   e.printstacktrace();
  }
    //保存图片ID
    imgList.add(index);
   }
   }
   
   //设置ImageSwitcher控件
 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(){
  /*
  * 在ImageSwitcher控件上滑动可以切换图片
  */
  @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图片所选,自动触发ImageSwitcher的setonItemSelectedListener
   gallery.setSelection(index,true);
   return true;
  }
  return false;
  }
  
 });
 
 //设置gallery控件
 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) {
  // Todo Auto-generated method stub
  }
  
 });
 }
 //设置ImgaeSwitcher
 @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;
 }
}

Android Gallery ImageSwitcher 求助....

这些图片都是res下面的 ,我想把网页上的图片用这种方式显示出来 。 我的图片都是解析的网页上的,请问 我该怎么做呢。。好心人来帮帮我把。。。

android Gallery 与 imageView 滑动冲突问题解决方法

android Gallery 与 imageView 滑动冲突问题解决方法

1:将 gallery 的触摸事件换成 imageView 的触摸事件

imageView.setOnTouchListener(new OnTouchListener() {


@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
      Gallery.onTouchEvent(event);
               return false;
}
 });

2:重写 Gallrey: 

OnIntercepTouchEvent 设置判断 ev.action;


android Gallery与imageView 滑动冲突问题解决方法

android Gallery与imageView 滑动冲突问题解决方法

android Gallery与imageView 滑动冲突问题解决方法

1:将gallery的触摸事件换成imageView的触摸事件

imageView.setOnTouchListener(new OnTouchListener() {


@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
      Gallery.onTouchEvent(event);
               return false;
}
 });

2:重写Gallrey: 

OnIntercepTouchEvent 设置判断ev.action;


Android ImageSwitcher 实现按钮的 3d 旋转效果

Android ImageSwitcher 实现按钮的 3d 旋转效果

Rotate3d 继承 Android 的 Animation 实现 3d 旋转:

public class Rotate3d extends Animation {
    private float mFromDegree;   
    private float mToDegree;   
    private float mCenterX;   
    private float mCenterY;   
    private float mLeft;   
    private float mTop;   
    private Camera mCamera;   
    private static final String TAG = "Rotate3d";
    
    public Rotate3d(float fromDegree, float toDegree, float left, float top,   
            float centerX, float centerY) {   
        this.mFromDegree = fromDegree;   
        this.mToDegree = toDegree;   
        this.mLeft = left;   
        this.mTop = top;   
        this.mCenterX = centerX;   
        this.mCenterY = centerY;   
  
    }

	@Override
	public void initialize(int width, int height, int parentWidth,
			int parentHeight) {
		super.initialize(width, height, parentWidth, parentHeight);
		mCamera = new Camera();  
	}

	@Override
	protected void applyTransformation(float interpolatedTime, Transformation t) {
		final float FromDegree = mFromDegree;   
        float degrees = FromDegree + (mToDegree - mFromDegree)   
                * interpolatedTime;   
        final float centerX = mCenterX;   
        final float centerY = mCenterY;   
        final Matrix matrix = t.getMatrix();   
  
        if (degrees <= -76.0f) {   
            degrees = -90.0f;   
            mCamera.save();   
            mCamera.rotateY(degrees);   
            mCamera.getMatrix(matrix);   
            mCamera.restore();   
        } else if (degrees >= 76.0f) {   
            degrees = 90.0f;   
            mCamera.save();   
            mCamera.rotateY(degrees);   
            mCamera.getMatrix(matrix);   
            mCamera.restore();   
        } else {   
            mCamera.save();   
            //   
            mCamera.translate(00, centerX);   
            mCamera.rotateY(degrees);   
            mCamera.translate(00, -centerX);   
            mCamera.getMatrix(matrix);   
            mCamera.restore();   
        }   
  
        matrix.preTranslate(-centerX, -centerY);   
        matrix.postTranslate(centerX, centerY);
	}
    
}

xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageSwitcher
        android:id="@+id/imageSwitcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

   
</LinearLayout>

activity:

public class TestActivity extends Activity {

	private int mCenterX = 160;
	private int mCenterY = 0;
	private ImageSwitcher imageSwitcher;

	private Rotate3d leftAnimation;
	private Rotate3d rightAnimation;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);// 显示front
		initSecond();
		imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
		imageSwitcher.setFactory(new OnFactorylmpl());// 设置转换工厂
		imageSwitcher.setInAnimation(leftAnimation);// 设置动画
		imageSwitcher.setOutAnimation(rightAnimation);// 设置动画
		imageSwitcher.setImageResource(R.drawable.background_01);// 设置初始图片
		
		imageSwitcher.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				imageSwitcher.setImageResource(R.drawable.background_02);
				  v.setEnabled(false);   
			}
		});
	}

	// 左旋转
	public void initFirst() {
		leftAnimation = new Rotate3d(0, -900.0f0.0f, mCenterX, mCenterY);
		rightAnimation = new Rotate3d(9000.0f0.0f, mCenterX, mCenterY);
		leftAnimation.setFillAfter(true);
		leftAnimation.setDuration(1000);
		rightAnimation.setFillAfter(true);
		rightAnimation.setDuration(1000);
	}

	// 右旋转
	public void initSecond() {
		leftAnimation = new Rotate3d(-9000.0f0.0f, mCenterX, mCenterY);
		rightAnimation = new Rotate3d(0900.0f0.0f, mCenterX, mCenterY);
		leftAnimation.setFillAfter(true);
		leftAnimation.setDuration(1000);
		rightAnimation.setFillAfter(true);
		rightAnimation.setDuration(1000);
	}

	private class OnFactorylmpl implements ViewFactory {
		@Override
		public View makeView() {
			ImageView image = new ImageView(TestActivity.this);// 创建图片控件
			image.setBackgroundColor(0xFFFFFFFF);// 设置背景颜色
			image.setScaleType(ImageView.ScaleType.CENTER); // 设置显示方式
			image.setLayoutParams(new ImageSwitcher.LayoutParams(
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));// 定义组建
			return image;
		}

	}

}


今天关于Android入门之Gallery+ImageSwitcher用法实例解析android imageswitcher的分享就到这里,希望大家有所收获,若想了解更多关于Android Gallery ImageSwitcher 求助....、android Gallery 与 imageView 滑动冲突问题解决方法、android Gallery与imageView 滑动冲突问题解决方法、Android ImageSwitcher 实现按钮的 3d 旋转效果等相关知识,可以在本站进行查询。

本文标签: