android Gallery点击 跳到ViewFlipper全屏显示图片
当我们用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
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
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"?>
android:fromXDelta="-100%p"
android:toXDelta="0" />
这样就能实现了
更多相关文章
- Android中Button
- Android学习笔记一:Android开发环境搭建和第一个应用程序
- 定制dialog的方式
- Android中Toolbar的使用 AppCompatActivity必备
- 用fiddler做代理服务器转发请求
- Android(安卓)Custom View --- Continuous Slider(连续滑动器)
- android 开发-系统设置界面的实现
- React-Native-StatusBar
- android手势操作&&实现滑动切换activity