Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我使用矩阵拖放图像,但它会跨越屏幕边界_Android_Image_Matrix_Drag And Drop - Fatal编程技术网

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()
查看简单教程嗨,谢谢回复,但这并不能解决我的问题。你能告诉我我的应用程序的代码吗