如何在android中使用onTouchListener()手指移动ImageView?

时间:2013-08-17 18:38:53

标签: android layout layoutparams

我想在android ......中使用onTouchListener()手指移动imageview。

我创建了一个xml - >

        <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    <RelativeLayout
        android:id="@+id/rel_slide"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/background_dark" >

        <ImageView
            android:id="@+id/img_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"/>"
    </RelativeLayout>

</RelativeLayout>

现在在Activity文件中我将onTouchListener实现到此imageView: img_arrow

这是代码:

((ImageView) findViewById(R.id.img_arrow)).setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View arg0, MotionEvent arg1) {
            switch (arg1.getAction()) {
              case MotionEvent.ACTION_MOVE:
                     LayoutParams layoutParams = (LayoutParams)v.getLayoutParams();
                 layoutParams.leftMargin=(int)arg1.getX();
             layoutParams.topMargin=(int)arg1.getY();
             v.setLayoutParams(layoutParams);
                  break;
            }
        return true;
        }
            });

但是这会导致imageView 一次显示2,这可能是因为当 ACTION_MOVE 调用..... plz help时,layoutParams设置非常快p>

2 个答案:

答案 0 :(得分:1)

嘿,我建议你不要玩这个观点。最好在视图上设置动画并使用该动画对象来执行所有操作。只是看不见onTouchEvent上的视图,让动画对象为你完成。您可以在列表视图https://github.com/47deg/android-swipelistview或顶级开发人员的任何其他滑动示例中查看swipeToDismiss的示例。快乐编码!!

[新] 我也做了伎俩。我想刷卡解锁功能,所以我使用了一个搜索栏并对其进行了定制。它工作得很好还是我。

答案 1 :(得分:0)

尝试删除一件事

android:src="@drawable/ic_launcher"

<ImageView
        android:id="@+id/img_arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>

并在运行时从类本身设置图像。 我希望这对你有所帮助。