跟随手指的小球

    

Crize_demo\draw_demo\src\main\java\com\ly\draw_demo\DrawView.java

 1 import android.content.Context;
 2 import android.graphics.Canvas;
 3 import android.graphics.Color;
 4 import android.graphics.Paint;
 5 import android.view.View;
 6 
 7 public class DrawView extends View {
 8 
 9     public float currentX = 40;
10     public float currentY = 50;
11 
12     public DrawView(Context context) {
13         super(context);
14     }
15 
16     @Override
17     protected void onDraw(Canvas canvas) {
18         super.onDraw(canvas);
19         //创建画笔
20         Paint paint = new Paint();
21         //设置画笔的颜色
22         paint.setColor(Color.RED);
23         //绘制一个小圆(作为小球)
24         canvas.drawCircle(currentX,currentY,15,paint);
25     }
26 }

Crize_demo\draw_demo\src\main\res\layout\activity_main.xml

1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2     xmlns:tools="http://schemas.android.com/tools"
3     android:layout_width="match_parent"
4     android:layout_height="match_parent"
5     android:orientation="horizontal"
6     android:id="@+id/root"
7     tools:context=".MainActivity">
8 
9 </LinearLayout>

Crize_demo\draw_demo\src\main\java\com\ly\draw_demo\MainActivity.java

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.view.MotionEvent;
 4 import android.view.View;
 5 import android.widget.LinearLayout;
 6 
 7 public class MainActivity extends Activity {
 8     
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13         //获取布局文件中的LinearLayout容器
14         LinearLayout root = (LinearLayout) findViewById(R.id.root);
15         //创建DrawView组件
16         final DrawView drawView = new DrawView(this);
17         //设置自定义框架的宽度和高度
18         drawView.setMinimumWidth(300);
19         drawView.setMinimumHeight(500);
20         //为drawView绑定Touch事件(触摸屏幕的监听事件)
21         drawView.setOnTouchListener(new View.OnTouchListener() {
22             @Override
23             public boolean onTouch(View v, MotionEvent event) {
24                 //修改drawView组件的currentX,currentY两个属性
25                 drawView.currentX = event.getX();
26                 drawView.currentY = event.getY();
27                 //通知drawView组件重绘
28                 drawView.invalidate();
29                 //返回true表明处理方法已经处理该事件
30                 return true;
31             }
32         });
33         root.addView(drawView);
34     }
35 
36 
37 }
原文地址:https://www.cnblogs.com/LY1124/p/4670973.html