您的位置:首页 > 移动开发 > Android开发

android Gallery点击 跳到ViewFlipper全屏显示图片

2013-09-17 18:32 531 查看
当我们用Gallery来显示一张图片的时候,往往需要点击查看其放太效果,网上有很多方法大部分是利用动画实现,现在介绍一种其它的方法来实现,给Gallery设置ItemClick事件,跳到相应的ViewFlipper来实现Gallery的图片左右滑动。

public class ShowImagesActivity extends Activity implements

android.view.GestureDetector.OnGestureListener {

private static final int SLIDE_RANGE = 100;

private static final int AUTO_SLIDE_TIME = 5;

private GestureDetector gestureDetector = null;

private ViewFlipper viewFlipper = null;

private Activity mActivity = null;

private AsyncPhoneLoader mImageLoader;

private int mFiSize = 0;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_filpper_layout);

Intent intent = getIntent();

@SuppressWarnings("unchecked")

ArrayList<String> imgesList = (ArrayList<String>) intent.getExtras().get("imgList");

mFiSize = imgesList.size();

int curPos = intent.getIntExtra("position", 0);

mImageLoader = new AsyncPhoneLoader();

mActivity = this;

viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);

gestureDetector = new GestureDetector(this);

loadImages(imgesList, curPos);

viewFlipper.setDisplayedChild(curPos); //当前显示的图片位置

viewFlipper.setAutoStart(true);

viewFlipper.setFlipInterval(AUTO_SLIDE_TIME * 1000);

if (viewFlipper.isAutoStart() && !viewFlipper.isFlipping()) {

viewFlipper.startFlipping();

}

}

/**

* async loading the images

*

* @param urlList

* @param pos

*/

private void loadImages(ArrayList<String> urlList, int pos) {

for (int i = 0; i < urlList.size(); i++) {

final ImageView imageView = new ImageView(this);

Drawable drawable = null;

drawable = mImageLoader.loadDrawable(urlList.get(i), mActivity, false,

new ImageCallback() {

@Override

public void imageLoaded(Drawable imageDrawable, String imageUrl) {

if (imageDrawable != null) {

imageView.setImageDrawable(imageDrawable);

} else {

imageView.setImageResource(R.drawable.photo_empty);

}

}

});

if (drawable == null) {

imageView.setImageResource(R.drawable.photo_load);

} else {

imageView.setImageDrawable(drawable);

}

imageView.setScaleType(ImageView.ScaleType.FIT_XY);

viewFlipper.addView(imageView, new LayoutParams(LayoutParams.FILL_PARENT,

LayoutParams.FILL_PARENT));

}

}

@Override

public boolean onTouchEvent(MotionEvent event) {

viewFlipper.stopFlipping();

viewFlipper.setAutoStart(false);

return gestureDetector.onTouchEvent(event);

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

if (e2.getX() - e1.getX() > SLIDE_RANGE) {

if (viewFlipper.getDisplayedChild() == 0) { //滑动到第一张不能再向左滑动

viewFlipper.stopFlipping();

return false;

} else {

Animation rightInAnim = AnimationUtils.loadAnimation(mActivity, R.anim.in_leftright);

Animation rightOutAnim = AnimationUtils.loadAnimation(mActivity, R.anim.out_leftright);

viewFlipper.setInAnimation(rightInAnim);

viewFlipper.setOutAnimation(rightOutAnim);

viewFlipper.showPrevious();

return true;

}

} else if (e2.getX() - e1.getX() < -SLIDE_RANGE) {

if (viewFlipper.getDisplayedChild() == mFiSize - 1) { //滑动到最后一张不能再向右滑动

viewFlipper.stopFlipping();

return false;

} else {

Animation lInAnim = AnimationUtils.loadAnimation(mActivity, R.anim.in_rightleft);

Animation lOutAnim = AnimationUtils.loadAnimation(mActivity, R.anim.out_rightleft);

viewFlipper.setInAnimation(lInAnim);

viewFlipper.setOutAnimation(lOutAnim);

viewFlipper.showNext();

return true;

}

}

return true;

}

@Override

public boolean onDown(MotionEvent e) {

return false;

}

@Override

public void onLongPress(MotionEvent e) {

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

return false;

}

@Override

public void onShowPress(MotionEvent e) {

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

return false;

}

进出的动画可以自己随便设置

类似:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" >

<translate

android:duration="500"

android:fromXDelta="-100%p"

android:toXDelta="0" />

</set>

这样就能实现了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐