如何在安卓系统中用手指触摸滑动图片?

9

我正在开发一款Android应用程序,希望能够通过手指触摸滑动图片。我已经实现了一个onClickListener,可以通过它来滑动图片,但我不知道如何实现手指触摸功能。

请建议任何方法,如何通过手指触摸滑动图片。任何建议、教程或方法都将有所帮助。

5个回答

33

你可以使用onTouchListner方法代替onClickListner。以下是一个onTouchListners的示例...

public class abc extends Activity implements OnTouchListener 
{
     ImageView img;
     protected void onCreate(Bundle savedInstanceState) 
     {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);

                img = (ImageView) findViewById(R.id.imageView1);
                img.setOnTouchListener(this);
     }

        public boolean onTouch(View v, MotionEvent event) 
    {
        switch (event.getAction())
        {
            case MotionEvent.ACTION_DOWN:
            {       
                  // Here u can write code which is executed after the user touch on the screen 
                     break; 
            }
            case MotionEvent.ACTION_UP:
            {             
                   // Here u can write code which is executed after the user release the touch on the screen    
                 break;
            }
            case MotionEvent.ACTION_MOVE:
            {  
               // Here u can write code which is executed when user move the finger on the screen   
                break;
            }
        }
        return true;
    }

谢谢Mohit的帮助。我应该写一个类似于onclick监听器中的操作,还是其他方式? - Avi Kumar

9
你需要的是一个ViewFlipper。这可以帮助你获得你期望的外观。 这个链接可能有所帮助。 也可以看看这个。 或者尝试以下方法,在你的xml中只添加这些:
<ViewFlipper android:id="@+id/flipper" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 
</ViewFlipper>

不需要用任何ImageView来包含。

现在在你的代码中这样做。

假设你已经将你的图片存储在一个像这样的数组中,

int gallery_grid_Images[]={R.drawable.gallery_image_1,R.drawable.gallery_image_2,R.drawable.gallery_image_3,
        R.drawable.gallery_image_4,R.drawable.gallery_image_5,R.drawable.gallery_image_6,R.drawable.gallery_image_7,
        R.drawable.gallery_image_8,R.drawable.gallery_image_9,R.drawable.gallery_image_10
        };

现在在你的onCreate()方法中:

viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
 for(int i=0;i<gallery_grid_Images.length;i++)
        {
        //  This will create dynamic image view and add them to ViewFlipper
            setFlipperImage(gallery_grid_Images[i]);
        }

现在将此方法添加到您的活动中,

private void setFlipperImage(int res) {
    Log.i("Set Filpper Called", res+"");
    ImageView image = new ImageView(getApplicationContext());
    image.setBackgroundResource(res);
    viewFlipper.addView(image);
}

就是这样,现在使用viewFlipper.showNext();viewFlipper.showPrevious();方法,你可以展示你的动态图片。


2

我强烈建议您使用Marc Reichelt开发的RealViewSwitcher类,可以从这里获取。它提供了一个轻微的视图切换器,就像Android启动器一样。


2

视图可以捕获触摸事件--请查看OnTouchEvent,它允许您捕获触摸下和触摸上等MotionEvent。您可以使用处理程序循环,在触摸下事件后将图像/视图移动到当前触摸的位置,直到触摸上事件。


2
你可以使用“画廊小部件”。
这是API的链接在这里
还有一个教程。对我来说非常有帮助:)

1
该类在API级别16中已被弃用。 - Ankit Shubham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接