我在学校制作一个项目,并且在叠加的ImageView中有这个小角色(目标是为那些知道它是什么的人创建一个Shimeji)。 通过屏幕拖动ImageView时,我遇到了问题。当拖动屏幕时切断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;
}
}
}
我很乐意获得一些帮助,以了解这一点。
不好意思,这不会改变任何东西... – ZackStrife
同样的问题在这里,实际上有什么建议? –
@SérgioS.Filho问题的类型 –