随意拖动自绘制图形

package Com.gqs;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class TestView extends View{
private Paint paint;
private Rect r;
private int upx=10;
private int upy=10;
private int downx=100;
private int downy=100;
    public TestView(Context context) {
        super(context);
        paint=new Paint();
        r=new Rect(upx,upy,downx,downy);
        // TODO Auto-generated constructor stub
    }
    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
       Log.i("onDraw","画图");
        canvas.drawColor(Color.WHITE);
        paint.setColor(Color.BLUE);
        paint.setStyle(Style.STROKE);
        canvas.drawRect(r, paint);    
    }

    public int Left()
    {
        return r.left;
    }
    public int right()
    {
        return r.right;
    }
    public int top()
    {
        return r.top;
    }
    public int bottom()
    {
        return r.bottom;
    }


    public void update(int dx,int dy)
    {

        
        if(r.right+dx<=getWidth()&&r.left+dx>=0&&r.top+dy>=0&&r.bottom+dy<=getHeight())
        {
            r.offset(dx, dy);
            postInvalidate();

        }
            
    }
    
    
}




package Com.gqs;

import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.widget.Toast;

/**
 *
 *@author gqs
 *Date:Oct 12, 2011 8:48:08 AM
 */
public class MoveViewActivity extends Activity {
    /** Called when the activity is first created. */
    TestView tv;
    private int x=0;
    private int y=0;
    private boolean isIn=true;
    private int lastx;
    private int lasty;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
   
        tv=new TestView(this);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(tv);
 
        tv.setOnTouchListener(new OnTouchListener() {
            
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                int action=event.getAction();
                Log.i("action", action+"");

            
//               Log.i("upx", tv.getX()+"");
                  switch(action){  
                    case MotionEvent.ACTION_DOWN:  
                        x=(int)event.getX();
                        y=(int)event.getY();
                        
                        if(x>=tv.Left()&&x<=tv.right()&&y>=tv.top()&&y<=tv.bottom())
                        {
                            Toast.makeText(getApplicationContext(),"在矩形内",Toast.LENGTH_SHORT).show();
                            isIn=true;

                        }
                        break;  
            
                    case MotionEvent.ACTION_MOVE:
                        
                         if(isIn==true)
                         {
                             int mx=(int)event.getX();
                             int my=(int)event.getY();
//                             Toast.makeText(getApplicationContext(),mx+"",Toast.LENGTH_SHORT).show();
                             Log.i("mx", my+"");
                             Log.i("my", my+"");
                             int dx=mx-lastx;
                             int dy=my-lasty;
                      
                             tv.update(dx, dy);
                             lastx=(int)event.getX();
                             lasty=(int)event.getY();
                            
                         }
                          
                        break;  
                    case MotionEvent.ACTION_UP:  
                        isIn=false;
                        break;                
                    }  
                return true;
            }
        });
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值