我正在学校做一个项目,我在一个叠加的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>
然后我将它添加到屏幕的方式:
public void onCreate() {
super.onCreate();
view = new ImageView(this);
view.setBackgroundResource(R.drawable.idle);
idleanimation = (AnimationDrawable)view.getBackground();
idleanimation.start();
view.setOnClickListener(new Click());
view.setOnLongClickListener(new drag());
li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.START;
myview = li.inflate(R.layout.playground, null);
wm.addView(view, params);
}
然后我将它拖到屏幕上的方式:
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;
}
}
}
为了理解这一点,我很乐意得到一些帮助。
答案 0 :(得分:0)
请设置ScaleType像这样在Imageview中 android:scaleType =&#34; fitXY&#34;
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="wrap_content"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_gravity="center"
android:scaleType="fitXY"
android:layout_height="100dp"/>
答案 1 :(得分:0)
在挖掘网络后,我终于找到了帮助我的东西:
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),移动它而不是视图就行了。