实现跟随手指移动的小球—跟随移动颜色变化哦!
来源:互联网 发布: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
- 实现跟随手指移动的小球—跟随移动颜色变化哦!
- 实现跟随手指移动的小球
- 实现跟随手指移动的小球
- 跟随手指移动的小球
- 跟随手指移动小球
- 小球跟随手指移动
- Android---26---跟随手指移动的小球
- 自定义小球跟随手指移动
- 自定义圆形View:实现跟随手指移动的小球
- Android开发——自定义View之实现跟随手指移动的小球
- Android拖动小球跟随手指移动Demo
- android从零开始-开发自定义View-跟随手指移动的小球
- Android 自定义View控件,实现跟随手指触摸移动的小球
- 跟随手指的小球
- 跟随手指的小球
- 跟随手指的小球
- 跟随手指的小球
- 跟随鼠标移动的小球
- Uncaught TypeError: download is not a function at HTMLAnchorElement.onclick (index.html:25)
- js 刷新页面
- 图像压缩——小波变换(Wavelet Transform)从连续小波变换谈到离散小波变换
- easyui 入门
- 八套卷第八套
- 实现跟随手指移动的小球—跟随移动颜色变化哦!
- 云星数据---Scala实战系列(精品版)】:Scala入门教程052-Scala实战源码-Scala implicit 操作03
- Eclipse开发最常用快捷键15
- js基础知识
- 唯快不破:高性能服务器框架--I/O模型
- jsp页面某些元素会不正常的显示出来,post访问会二次加载项目名
- ubuntu14.04+cuda+cudnn+tensorflow-gpu+caffe等深度工具安装小结
- 简记:com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation
- mt2503 [Language]孟加拉字库文件说明