`
denyx123
  • 浏览: 41631 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android UI开发第八篇——ViewFlipper

 
阅读更多
怎么实现Android主页面的左右拖动效果。其实实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。

java code:
public class TestFlip extends Activity implements OnGestureListener {

        private ViewFlipper flipper;

        private GestureDetector detector;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                detector = new GestureDetector(this);
                flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
               
                flipper.addView(addView(R.layout.layout1));
                flipper.addView(addView(R.layout.layout2));
                flipper.addView(addView(R.layout.layout3));
                flipper.addView(addView(R.layout.layout4));       
        }

        private View addView(int layout) {
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View view = inflater.inflate(layout, null);
                return view;
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
                return this.detector.onTouchEvent(event);
        }

        @Override
        public boolean onDown(MotionEvent e) {
                // TODO Auto-generated method stub
                return false;
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                        float velocityY) {
                if (e1.getX() - e2.getX() > 120) {
                        this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
                        this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
                        this.flipper.showNext();
                        return true;
                } else if (e1.getX() - e2.getX() < -120) {
                        this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
                        this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
                        this.flipper.showPrevious();
                        return true;
                }
                return false;
        }

        @Override
        public void onLongPress(MotionEvent e) {
                // TODO Auto-generated method stub

        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                        float distanceY) {
                // TODO Auto-generated method stub
                return false;
        }

        @Override
        public void onShowPress(MotionEvent e) {
                // TODO Auto-generated method stub

        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
                // TODO Auto-generated method stub
                return false;
        }
}

xml code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <ViewFlipper android:id="@+id/ViewFlipper01"
                android:layout_width="fill_parent" android:layout_height="fill_parent">
        </ViewFlipper>
</LinearLayout>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics