java - ViewFlipper 项目顺序

标签 java android eclipse viewflipper

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <ViewFlipper
        android:layout_margin="6dip"
        android:id="@+id/view_flipper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">           

        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/photo1"/>        

        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/photo2"/>

        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/photo3"/>

        <ImageView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/photo4"/>


    </ViewFlipper>

</LinearLayout>

主要 Activity :

public class MainActivity extends Activity {

    private ViewFlipper vf; 
    private float lastX;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        vf = (ViewFlipper) findViewById(R.id.view_flipper);        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public boolean onTouchEvent(MotionEvent touchevent) {

        switch (touchevent.getAction())
        {
            case MotionEvent.ACTION_DOWN:
            {
                lastX = touchevent.getX();
                break;
            }

            case MotionEvent.ACTION_UP:
            {
                float currentX = touchevent.getX();

                if (lastX < currentX)
                {
                    if (vf.getDisplayedChild()==0) 
                        break;

                    vf.setInAnimation(this, R.anim.in_from_left);
                    vf.setOutAnimation(this, R.anim.out_to_right);
                    vf.showNext();
                }

                if (lastX > currentX)
                {
                    if (vf.getDisplayedChild()==1) 
                        break;

                    vf.setInAnimation(this, R.anim.in_from_right);  
                    vf.setOutAnimation(this, R.anim.out_to_left);
                    vf.showPrevious();                  
                }

                break;
            }

            case MotionEvent.ACTION_MOVE:
            {
                float tempX = touchevent.getX();
                int scrollX = (int) (tempX - lastX);

                //vf.scrollBy(scrollX, 0);

                break;
            }

        }

        return false;

    }
}

图像顺序如下:photo1、photo4、photo3、photo2。如何制作:photo1, photo2, photo3, photo4?

谢谢

最佳答案

图片的顺序没问题,但是你的代码有问题。请参阅下文如何解决此问题:

public class MainActivity extends Activity {

    private ViewFlipper vf;
    private float lastX;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        vf = (ViewFlipper) findViewById(R.id.view_flipper);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public boolean onTouchEvent(MotionEvent touchevent) {

        switch (touchevent.getAction())
        {
            case MotionEvent.ACTION_DOWN:
            {
                lastX = touchevent.getX();
                break;
            }

            case MotionEvent.ACTION_UP:
            {
                float currentX = touchevent.getX();

                if (lastX < currentX)
                {
                    if (vf.getDisplayedChild()==0)
                        break;

                    vf.setInAnimation(this, R.anim.in_from_left);
                    vf.setOutAnimation(this, R.anim.out_to_right);
//                    vf.showNext();
                    vf.showPrevious();
                }

                if (lastX > currentX)
                {
//                    if (vf.getDisplayedChild()==1)
                    if (vf.getDisplayedChild()==vf.getChildCount()-1)
                        break;

                    vf.setInAnimation(this, R.anim.in_from_right);
                    vf.setOutAnimation(this, R.anim.out_to_left);
//                    vf.showPrevious();
                    vf.showNext();
                }

                break;
            }

            case MotionEvent.ACTION_MOVE:
            {
                float tempX = touchevent.getX();
                int scrollX = (int) (tempX - lastX);

                //vf.scrollBy(scrollX, 0);

                break;
            }

        }

        return false;

    }
}

关于java - ViewFlipper 项目顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854759/

相关文章:

javascript - 元素无法位于 (x,y) : how to fix for a list of WebElements that need to be clicked one by one

android - 如何在android中从左向右滑动组件

java - Eclipse ctrl+click 指的是错误的行

java - 在 eclipse 中使用 Ant 调试 TestNg java 代码

java - Log4j2,在运行时为特定于线程设置日志级别

java - 了解 for 循环和数组索引

java - 如何获取JFrame标题的值?

android - 如何在Android应用程序中实现捐赠功能?

android - 我的 android 应用程序有一个基于似乎损坏的 ASyncTask 的客户端套接字

java - 项目构建错误: Non-resolvable parent POM fo