实现跟随手指移动的小球—跟随移动颜色变化哦!

来源:互联网 发布:python获取不了源代码 编辑:程序博客网 时间:2024/06/05 18:51
     

实现的功能:

手指在屏幕上滑动,小球始终跟随手指移动。

实现的思路:

1)自定义View,在onDraw中画圆作为小球;

2)重写自定义View的onTouchEvent方法,记录触屏坐标,用新的坐标重新绘制小球;

3)在布局中引用自定义View布局,运行程序,实现跟随手指移动效果。

关键技术点:

自定义View应用、触摸事件处理、canvas绘图、Paint应用。

     

      首先我们先自定义View类,然后继承View。


public class BallView extends View {    private Paint paint;    Context context;    //圆的初始位置坐标    private int x=200;    private int y=200;    private int radius=100;    //定义颜色数组      private int colorArray[] = {Color.BLACK,Color.GRAY,Color.GREEN,Color.YELLOW, Color.RED};    public BallView(Context context) {        super(context);        this.context=context;    }    public BallView(Context context, AttributeSet attrs) {        super(context, attrs);        this.context=context;    }    public BallView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        this.context=context;    }    /**     * onDraw方法实现绘制内容     * @param canvas     */    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        //用canvas将背景设置成白色        canvas.drawColor(Color.WHITE);        //设置画笔        paint=new Paint();        setPaintRandomColor();        //消除锯齿        paint.setAntiAlias(true);        canvas.drawCircle(x,y,radius,paint);    }    //为画笔设置随机颜色      private void setPaintRandomColor(){        Random rand = new Random();        int randomIndex = rand.nextInt(colorArray.length);        paint.setColor(colorArray[randomIndex]);    }    //实现onTouchEvent方法    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()){            case MotionEvent.ACTION_DOWN:                x=(int)event.getX();                y= (int) event.getY();                System.out.println("按下时:"+ "x坐标"+event.getRawX()+" "+"y坐标:"+event.getRawY());
                break;            case MotionEvent.ACTION_MOVE:                x=(int)event.getX();                y= (int) event.getY();                System.out.println("移动时:"+ "x坐标"+event.getRawX()+" "+"y坐标:"+event.getRawY());                break;            case MotionEvent.ACTION_UP:                x=(int)event.getX();                y= (int) event.getY();                System.out.println("抬起时:"+ "x坐标"+event.getRawX()+" "+"y坐标:"+event.getRawY());                break;        }        //获取屏幕高度        WindowManager manager=(WindowManager)context.getSystemService(context.WINDOW_SERVICE);        int width=manager.getDefaultDisplay().getWidth();        int height=manager.getDefaultDisplay().getHeight();        if (x>=18 && y>=18 && x<= width-18 && y <= height-18){            postInvalidate();        }        return true;    }}
    在xml中把自定义View的类写一下, 在这里就不写了
    在主Activity里把自定义View类给写一下
    
    
public class BallActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        RelativeLayout container=(RelativeLayout)findViewById(R.id.activity_main);        BallView ballView=new BallView(this);        container.addView(ballView);    }}
        这样 我们的颜色变化的小球就完成了。 微笑大笑
   
   
          

   


阅读全文
0 0
原创粉丝点击