本文将介绍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 Gallery 与 imageView 滑动冲突问题解决方法
- android Gallery与imageView 滑动冲突问题解决方法
- Android ImageSwitcher 实现按钮的 3d 旋转效果
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 滑动冲突问题解决方法
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 旋转效果
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(0, 0, centerX);
mCamera.rotateY(degrees);
mCamera.translate(0, 0, -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, -90, 0.0f, 0.0f, mCenterX, mCenterY);
rightAnimation = new Rotate3d(90, 0, 0.0f, 0.0f, mCenterX, mCenterY);
leftAnimation.setFillAfter(true);
leftAnimation.setDuration(1000);
rightAnimation.setFillAfter(true);
rightAnimation.setDuration(1000);
}
// 右旋转
public void initSecond() {
leftAnimation = new Rotate3d(-90, 0, 0.0f, 0.0f, mCenterX, mCenterY);
rightAnimation = new Rotate3d(0, 90, 0.0f, 0.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 旋转效果等相关知识,可以在本站进行查询。
本文标签: