当前位置:操作系统 > 安卓/Android >>

android滑屏切换界面

 实现思路,刚开端的时辰我是用ViewFlipper控件来做很是的简单然则实现不了拖拽移动屏幕的结果,终极放弃决意自定义一个控件实现如许结果。 
 
接下来我具体的申明注解一下我开辟时写的这个实验demo,软件顶用的滑屏就是由如许的代码实现的。 
 
       起首新建一个控件类TouchPageView并且持续自ViewGroup,阁下滑动换屏我的实现是在TouchPageView添加3个子view分别代表看不到的左边屏幕、可以看到的中心屏幕、看不到的右边屏幕,如许在滑屏时辰就可以经由过程络续调剂这3个view的地位实现连气儿不中断滑屏换屏,下面的实验中我分别把3个view设置成红色、绿色、黄色如许切换的时辰可以看到明显结果,这3个view在TouchPageView的机关办法中调用init办法进行初始化: 
 
private void init() 
    { 
        views= new ArrayList<LinearLayout>(); 
        view1=new LinearLayout(context); 
        view1.setBackgroundColor(Color.YELLOW); 
        this.addView(view1); 
        TextView tv=new TextView(context); 
        tv.setText("测试"); 
        view1.addView(tv); 
        views.add(view1); 
         
         
        view2=new LinearLayout(context); 
        view2.setBackgroundColor(Color.RED); 
        this.addView(view2); 
        views.add(view2); 
         
        view3=new LinearLayout(context); 
        view3.setBackgroundColor(Color.GREEN); 
        this.addView(view3); 
        views.add(view3); 
         
        final ViewConfiguration configuration = ViewConfiguration.get(getContext()); 
        mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); 
    }     
 
  接下来的实现是关键,重写onLayout办法对3个view的显示地位布局进行把握,经由过程下面的这个办法,把3个view进行程度一个跟着一个进行布局显示。 
 
@Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
        int childLeft = -1; 
        final int count = views.size(); 
        //程度从左到右放置 
        for (int i = 0; i < count; i++) { 
            final View child =views.get(i); 
            if (child.getVisibility() != View.GONE) { 
                final int childchildWidth = child.getMeasuredWidth(); 
                if(childLeft==-1) 
                { 
                    childLeft=-childWidth; 
                } 
                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight()); 
                childLeft += childWidth; 
            } 
        } 
         
    } 
 
       3个view地位放置好之后,接下来的实实际现手指在屏幕拖拽滑动时让3个view跟着手指的地位进行变更显示,这个必然是在onTouchEvent办法中实现了,分别在MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP三个手指状况中进行把握,鄙人面的实现中还采取了VelocityTracker的办法敌手指的滑动速度进行跟踪,如许按照滑动速度决意屏幕往哪个标的目标换屏,关键的代码如下: 
@Override 
    public boolean onTouchEvent(MotionEvent ev){ 
         
        if(!lock) 
        { 
            if (mVelocityTracker == null) { 
                mVelocityTracker = VelocityTracker.obtain(); 
            } 
            mVelocityTracker.addMovement(ev); 
             
            final int action = ev.getAction(); 
            final float x = ev.getX(); 
            final float y = ev.getY(); 
             
            switch (action) { 
            case MotionEvent.ACTION_DOWN://按下去 
                if(touchState==TOUCH_STATE_REST) 
                { 
                    //记录按下去的的x坐标 
                    lastMotionX = x; 
                    touchState=TOUCH_STATE_MOVING; 
                     
                    isMoved=false; 
                } 
                 
                break; 
   
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,