我想在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>
答案 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"/>
并在运行时从类本身设置图像。 我希望这对你有所帮助。