Android 我使用矩阵拖放图像,但它会跨越屏幕边界
我使用矩阵来拖放图像,但它跨越了屏幕边界。当我向上拖动图像时,它跨越了屏幕边界,以及如何将图像向下拖动到某个高度Android 我使用矩阵拖放图像,但它会跨越屏幕边界,android,image,matrix,drag-and-drop,Android,Image,Matrix,Drag And Drop,我使用矩阵来拖放图像,但它跨越了屏幕边界。当我向上拖动图像时,它跨越了屏幕边界,以及如何将图像向下拖动到某个高度 public class MainActivity extends Activity { // mainLayout is the child of the HorizontalScrollView ... private LinearLayout mainLayout; // this is an array that h
public class MainActivity extends Activity {
// mainLayout is the child of the HorizontalScrollView ...
private LinearLayout mainLayout;
// this is an array that holds the IDs of the drawables ...
private int[] images = { R.drawable.dd, R.drawable.ss };
int Measuredwidth = 0, MeasuredHeight = 0;
float x = 0;
View cell = null;
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
PointF startPoint = new PointF();
static final int DRAG = 1;
int mode = NONE;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
mainLayout = (LinearLayout) findViewById(R.id.linearLayout);
for (int i = 0; i < images.length; i++) {
cell = getLayoutInflater().inflate(R.layout.image, null);
final ImageView img = (ImageView) cell.findViewById(R.id.imageView);
img.setImageResource(images[i]);
Point size = new Point();
WindowManager w = getWindowManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
w.getDefaultDisplay().getSize(size);
MeasuredHeight = size.y;
Measuredwidth = size.x;
} else {
Display d = w.getDefaultDisplay();
Measuredwidth = d.getWidth();
MeasuredHeight = d.getHeight();
}
AbsoluteLayout aalayout = (AbsoluteLayout) cell
.findViewById(R.id.absLayout);
Button btn = (Button) cell.findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "mcdk", 2000)
.show();
}
});
aalayout.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
System.out.println("matrix=" + savedMatrix.toString());
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
System.out.println("imge dowm press");
savedMatrix.set(matrix);
startPoint.set(img.getLeft(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
System.out.println("imgeup press");
float dx = event.getX() -startPoint.x;
float dy = event.getY() - startPoint.y;
System.out.println("startpointy: "+startPoint.y);
System.out.println("dy: "+event.getY());
matrix.set(savedMatrix);
int height = img.getHeight();
int h1 = height/1;
// if (( event.getY() >10) && (event.getY() < h1)){
System.out.println("imge height: "+h1);
matrix.postTranslate(img.getLeft(), dy);
// }
break;
}
img.setImageMatrix(matrix);
return true;
}
});
System.out.println("bmgbgklb");
mainLayout.addView(cell);
}
}
}
公共类MainActivity扩展活动{
//mainLayout是HorizontalScrollView的子级。。。
私人线路布局主要布局;
//这是一个数组,它保存可绘图项的ID。。。
私有int[]图像={R.drawable.dd,R.drawable.ss};
int Measuredwidth=0,MeasuredHeight=0;
浮动x=0;
查看单元格=空;
矩阵=新矩阵();
矩阵savedMatrix=新矩阵();
PointF startPoint=新的PointF();
静态最终整数阻力=1;
int模式=无;
/**在首次创建活动时调用*/
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.activity_main);
主布局=(线性布局)findViewById(R.id.LinearLayout);
对于(int i=0;i=Build.VERSION\u code.HONEYCOMB\u MR2){
w、 getDefaultDisplay().getSize(大小);
测量高度=尺寸y;
测量宽度=尺寸x;
}否则{
Display d=w.getDefaultDisplay();
Measuredwidth=d.getWidth();
测量高度=d.getHeight();
}
绝对布局aalayout=(绝对布局)单元格
.findviewbyd(R.id.absLayout);
按钮btn=(按钮)单元格.findViewById(R.id.button1);
btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(getApplicationContext(),“mcdk”,2000年)
.show();
}
});
aalayout.setOnTouchListener(新视图.OnTouchListener(){
公共布尔onTouch(视图v,运动事件){
System.out.println(“矩阵=“+savedMatrix.toString());
开关(event.getAction()&MotionEvent.ACTION\u掩码){
case MotionEvent.ACTION\u DOWN:
系统输出打印(imge dowm出版社);
savedMatrix.set(矩阵);
set(img.getLeft(),event.getY());
打破
case MotionEvent.ACTION\u移动:
系统输出打印(imgeup印刷机);
float dx=event.getX()-startPoint.x;
float dy=event.getY()-startPoint.y;
System.out.println(“startPoint:+startPoint.y”);
System.out.println(“dy:+event.getY());
矩阵集(savedMatrix);
int height=img.getHeight();
int h1=高度/1;
//如果((event.getY()>10)和&(event.getY()
查看简单教程嗨,谢谢回复,但这并不能解决我的问题。你能告诉我我的应用程序的代码吗