【问题标题】:Drag Image facility拖动图像工具
【发布时间】:2012-02-08 09:50:10
【问题描述】:

我想在触摸时在 android 中移动图像 事件,因为我的手指移动图像必须随着手指坐标移动。请问有人可以帮我吗?

【问题讨论】:

    标签: android canvas touch-event


    【解决方案1】:
    package com.hb.skew;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.graphics.RectF;
    import android.graphics.drawable.GradientDrawable.Orientation;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.LinearLayout;
    
    public class SkewActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    
            LinearLayout li = new LinearLayout(this);
            li.setGravity(Gravity.CENTER_HORIZONTAL);
            li.setOrientation(LinearLayout.VERTICAL);
    
            li.addView(new MyView(this),this.getWindowManager().getDefaultDisplay().getWidth(), 100);
        //    li.addView(new MyView(this),this.getWindowManager().getDefaultDisplay().getWidth(), 100);
    
            setContentView(li);
        }
    }
    class MyView extends View{
    
            Paint paint = new Paint();
            public MyView(Context context) {
                    super(context);
                    setBackgroundColor(Color.BLUE);
                    setFocusable(true);
                    setFocusableInTouchMode(true);
                    paint.setStyle(Style.FILL_AND_STROKE);
                    paint.setColor(Color.RED);
                    paint.setAntiAlias(true);
            }
    
            @Override
            protected void onDraw(Canvas canvas) {
                    super.onDraw(canvas);
    
                            RectF rf= new RectF();
                            rf.left=20;
                            rf.top=0;
                            rf.bottom=100;
                            rf.right=100;
    
                            canvas.skew(+0f, +0.3f);
                            canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon), null, rf ,paint);
                            //canvas.drawRect(20, 30, 100, 130, paint);    
                            canvas.restore();
                            rf.left+=50;
                            rf.top=30;
                            rf.bottom=130;
                            rf.right+=100;
                            canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon), null, rf ,paint);
    
                            canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon), x, y ,paint);
    
            }
    
            float x,y;
            @Override
            public boolean onTouchEvent(MotionEvent event) {
    
    
                    x=event.getX();
                    y=event.getY();
    
    
                    invalidate();
                    return true;
            }
    
    }
    

    package com.hb.skew;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.graphics.RectF;
    import android.graphics.drawable.GradientDrawable.Orientation;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.LinearLayout;
    
    public class SkewActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    
            LinearLayout li = new LinearLayout(this);
            li.setGravity(Gravity.CENTER_HORIZONTAL);
            li.setOrientation(LinearLayout.VERTICAL);
    
            li.addView(new MyView(this),this.getWindowManager().getDefaultDisplay().getWidth(), 100);
        //    li.addView(new MyView(this),this.getWindowManager().getDefaultDisplay().getWidth(), 100);
    
            setContentView(li);
        }
    }
    class MyView extends View{
    
        Paint paint = new Paint();
        public MyView(Context context) {
            super(context);
            setBackgroundColor(Color.BLUE);
            setFocusable(true);
            setFocusableInTouchMode(true);
            paint.setStyle(Style.FILL_AND_STROKE);
            paint.setColor(Color.RED);
            paint.setAntiAlias(true);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
    
                RectF rf= new RectF();
                rf.left=20;
                rf.top=0;
                rf.bottom=100;
                rf.right=100;
    
                canvas.skew(+0f, +0.3f);
                canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon), null, rf ,paint);
                //canvas.drawRect(20, 30, 100, 130, paint); 
                canvas.restore();
                rf.left+=50;
                rf.top=30;
                rf.bottom=130;
                rf.right+=100;
                canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon), null, rf ,paint);
    
                canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon), x, y ,paint);
    
        }
    
        float x,y;
        @Override
        public boolean onTouchEvent(MotionEvent event) {
    
    
            x=event.getX();
            y=event.getY();
    
    
            invalidate();
            return true;
        }
    
    }
    

    【讨论】:

    • -1,链接不是答案。当该链接失效或站点出现故障时,您的答案将变得毫无用处。请在您的答案中提供足够的上下文,以便它可以独立存在。
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 2014-02-27
    • 2014-03-06
    • 2011-09-30
    • 2019-10-17
    • 2014-02-14
    • 2013-01-11
    相关资源
    最近更新 更多