Android 通过屏幕拖动时图像视图被剪切

Android 通过屏幕拖动时图像视图被剪切,android,imageview,drag,Android,Imageview,Drag,我在学校做一个项目,我在一个覆盖图上的ImageView中有一个小角色(目标是为那些知道它是什么的人创建一个Shimeji)。 我在屏幕上拖动ImageView时遇到问题 。 因此,ImageView中设置的图像正在移动,但它被ImageView切断(至少我猜是这样,因为只要我移动它,它就开始被切断) 以下是我的xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http:/

我在学校做一个项目,我在一个覆盖图上的ImageView中有一个小角色(目标是为那些知道它是什么的人创建一个Shimeji)。 我在屏幕上拖动ImageView时遇到问题

因此,ImageView中设置的图像正在移动,但它被ImageView切断(至少我猜是这样,因为只要我移动它,它就开始被切断)

以下是我的xml:

 <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/Layout">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/View"
            android:adjustViewBounds="true"
         />

</FrameLayout>
然后我在屏幕上拖动它的方式:

 private class drag implements View.OnLongClickListener {
    float x,y;
    @Override
    public boolean onLongClick(View v) {
        view.setOnTouchListener(new action());
        return false;
    }

    private class action implements View.OnTouchListener {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
            return true;
            case MotionEvent.ACTION_MOVE:
                x=event.getX();
                y=event.getY();

                view.setX(x-81);
                view.setY(y - 100);
            break;
            case MotionEvent.ACTION_UP:
            break;
            }
            return false;
        }
    }
}

为了理解这一点,我很高兴能得到一些帮助。

请在Imageviewandroid:ScaleType=“fitXY”中像这样设置ScaleType


请在Imageviewandroid:ScaleType=“fitXY”中像这样设置ScaleType


在搜索了整个网络后,我终于找到了一些帮助我的东西:

 case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                params.x= (x_cord-360);
                params.y =(y_cord-640);
                wm.updateViewLayout(view, params);

            break;

这是窗口管理器(wm),移动它而不是视图起到了作用。

在网络周围挖掘之后,我终于找到了一些帮助我的东西:

 case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                params.x= (x_cord-360);
                params.y =(y_cord-640);
                wm.updateViewLayout(view, params);

            break;

这是窗口管理器(wm),移动它而不是视图起到了作用。

同样的问题,有什么建议吗?@SérgioS.Filho哪种类型的problem@NKmewara我有一个2048px宽的png图像,其中包含通过更改ImageView marginLeft从屏幕右向左移动的乐谱。父项的选项“animateLayoutChanges”被标记为true。这对我来说已经足够好了,但是对于一个屏幕非常小的设备,图像的结尾被剪掉了。同样的问题,有什么建议吗?@sérgioS.Filho哪种类型的problem@NKmewara我有一张2048px宽的png图像,包含通过更改ImageView marginLeft从屏幕右向左移动的乐谱。父项的选项“animateLayoutChanges”被标记为true。这对我来说已经足够好了,但是对于一个屏幕非常小的设备来说,图像的结尾被剪切掉了。
 case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                params.x= (x_cord-360);
                params.y =(y_cord-640);
                wm.updateViewLayout(view, params);

            break;