【问题标题】:View gets disappeared and shakes up on onTouchEvent视图消失并在 onTouchEvent 上抖动
【发布时间】:2014-11-17 16:09:18
【问题描述】:

我有一个布局,我在其中放置一个视图并仅在水平方向上移动。我设法做到了,但问题是拖动不是很顺畅,它摇晃很多,有时会出现错误的坐标。

除了我经常使用该视图时,它会从布局中消失。

这里是 mu xml 文件

 <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="300dip"
    android:id="@+id/graph"
    android:orientation="vertical"
    android:background="#ffffff"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <View
        android:id="@+id/drag_line"
        android:layout_width="50dp"
        android:visibility="visible"
        android:background="@drawable/line"
        android:layout_gravity="center_horizontal|top"
        android:layout_height="170dp"
        android:src="@drawable/line" />

</FrameLayout>

这是我的 onTouch 视图事件处理程序,

  line.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            final int action = motionEvent.getAction();
            final int x = (int) motionEvent.getRawX();
            final int y = (int) motionEvent.getRawY();


            switch (action & MotionEvent.ACTION_MASK) {
             `enter code here`   case MotionEvent.ACTION_MOVE:{
                    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
                    int currentX = (int) motionEvent.getX();
                    params.rightMargin = (params.rightMargin - (currentX));
                    params.leftMargin = (params.leftMargin + (currentX));
                    line.setLayoutParams(params);
                    line.invalidate();
                    break;
                }
                case MotionEvent.ACTION_UP: {

                        dynamicUpdate(line.getX());
                        touchFlag = true;

                }
            }
            return true;
        }
    });

我想处理 ACTION_Up 上的一个条件。

我不明白为什么视图在触摸移动时会在布局上晃动,有时会消失。

【问题讨论】:

标签: android android-layout view touch ontouchlistener


【解决方案1】:

我也遇到了同样的问题,event.getX() 是视图的坐标。 如果您的视图移动,那么屏幕中同一点的坐标会发生变化,因此会抖动。你应该使用event.getRawX()event.getRawY()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2021-04-30
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多