Android实现随手指移动小球

本文实例为大家分享了Android实现随手指移动小球的具体代码,供大家参考,具体内容如下

这个随手指移动小球,首先要使用paint画笔在canvas画布画出一个圆,然后重写OnTouchEvent(),进行小球的坐标的获取和小球的重新绘画。

package com.bwei.self_view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;

/**
 * Created by ZhangTAO on 2017/11/2.
 */

public class MyView extends View{
  // 初始化圆的位置
  public int x = 200;
  public int y = 600;
  Context context;
  public MyView(Context context) {
    super(context,null);
    this.context = context;
  }

  public MyView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs,0);
    this.context = context;
  }

  public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    initView();
    this.context = context;
  }

  private void initView() {
    setBackgroundColor(Color.BLUE);
  }

  /**
   * @canvas 画布 paint 画笔
   */
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //建立一根画笔
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.RED);
    paint.setFakeBoldText(true);
    //画布
    canvas.drawCircle(DipUtils.dip(getContext(),x),
        DipUtils.dip(getContext(),y),
        DipUtils.dip(getContext(),50),paint);

  }
  /**
   * 进行设置touch移动
   */
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);
    int action = event.getAction();
    switch (action) {
      case MotionEvent.ACTION_DOWN :
      case MotionEvent.ACTION_MOVE :
      case MotionEvent.ACTION_UP :
        //获取当前触摸点的x,y坐标
        x = (int) event.getX();
        y = (int) event.getY();
        invalidate();
        break;
    }
//    获取屏幕的宽高
    WindowManager manger = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    int width = manger.getDefaultDisplay().getWidth();
    int height = manger.getDefaultDisplay().getHeight();
    //重新绘制圆 ,控制小球不会被移除屏幕
    if(x>=20 && y>=20 && x<=width-20 && y<height-20) {
      invalidate();
    }
      //自己处理触摸事件
     return true;
    //修改当前的坐标
//    this.x =(int) event.getX();
//    this.y =(int) event.getY();
    //重绘小球
//    this.invalidate();
//    return true;
  }
}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android绘制跟随手指移动的小球

    为了实现一个跟随手指移动的小球,考虑到开发自定义的UI组件,这个UI组件将会在一个指定的位置绘制一个小球,这个位置可以动态改变.当用户手指在屏幕上拖动时,程序监听到这个手指的动作,并且传入UI组件,通知组件重绘即可.话不多说,上代码: 在java的DrawView中: package com.example.test01; import android.content.Context; import android.graphics.Canvas; import android.graphics

  • Android实现拖动小球跟随手指移动效果

    Android拖动小球跟随手指移动Demo,供大家参考,具体内容如下 1.使用的知识点有自定义View,利用Canvas画球: 2.使用触摸时间来操作: 效果图: 代码如下: 1.自定义view: public class DrawView extends View { public float currentX = 50; public float currentY = 50; public DrawView(Context context) { super(context); } publi

  • Android自定义圆形View实现小球跟随手指移动效果

    本文实例为大家分享了Android实现小球跟随手指移动效果的具体代码,供大家参考,具体内容如下 一. 需求功能 手指在屏幕上滑动,红色的小球始终跟随手指移动. 实现的思路: 1)自定义View,在onDraw中画圆作为小球: 2)重写自定义View的onTouchEvent方法,记录触屏坐标,用新的坐标重新绘制小球: 3)在布局中引用自定义View布局,运行程序,实现跟随手指移动效果. 关键技术点 自定义View应用.触摸事件处理.canvas绘图.Paint应用. 实现步骤 1. 新建一个工程

  • Android实现移动小球和CircularReveal页面切换动画实例代码

    前言 本文主要给大家介绍了关于Android如何实现移动小球和CircularReveal页面切换动画的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 效果图如下 是在fragment中跳转activity实现的效果,fragment跳fragment,activity跳activity类似~~ 实现过程 重写FloatingActionButton的onTouchListener()方法,使小球可以移动,并判断边界 点击fab时记录坐标传到下一个页面,在下一个页面展

  • Android自定义控件实现随手指移动的小球

    一个关于自定义控件的小Demo,随着手指移动的小球. 先看下效果图: 实现代码如下: 1.自定义控件类 package com.dc.customview.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import

  • Android实现随手指移动小球

    本文实例为大家分享了Android实现随手指移动小球的具体代码,供大家参考,具体内容如下 这个随手指移动小球,首先要使用paint画笔在canvas画布画出一个圆,然后重写OnTouchEvent(),进行小球的坐标的获取和小球的重新绘画. package com.bwei.self_view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import

  • Android开发实现跟随手指的小球效果示例

    本文实例讲述了Android开发实现跟随手指的小球效果.分享给大家供大家参考,具体如下: 配置DrawView类用于绘制小球 public class DrawView extends View { public float currentX = 40; public float currentY = 50; //定义并创建画笔 Paint p = new Paint(); public DrawView(Context context) { super(context); } public D

  • Android自定义View实现弹性小球效果

    照例先看效果图 自定义代码示例 public class BezierView extends View { Paint paint;//画笔 Path path;//路径 int radius = 50;//圆的半径 int time = 100;//计数时长 int index; int offsetIndex; float viewX, viewY;//图形中心点坐标 float width;//屏幕宽度 float partWidth;//屏幕宽度的1/4 int paddingLeft

  • Android实现跟随手指拖动并自动贴边的View样式(实例demo)

    效果图 代码 /** * 根据手指拖动的当前位置,自动贴边的View */ public class DragView extends ImageView implements View.OnTouchListener{ private int screenWidth; private int screenHeight; private Context mContext; private int lastX, lastY; private int left ,top; private ViewG

  • 基于Android实现随手指移动的ImageView

    ImageView用来显示任意图像图片,可以自己定义显示尺寸,显示颜色等等. 运行效果是这样的(文字说明): 首次进入程序,手指点击屏幕上的任意位置,图片会随之移动. 布局文件 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="

  • Android游戏开发学习①弹跳小球实现方法

    本文实例讲述了Android游戏开发学习①弹跳小球实现方法.分享给大家供大家参考.具体如下: 在学习了一点点Android之后,觉得有必要记录下来,于是就开了这个新坑,慢慢来填吧. 1.运动体Movable类 本例主要模拟了一组大小不一的球以一定的水平初速度从高处落下的运动轨迹.其中的小球为一个可移动物体Movable对象,该类中除了包含小球图片对象之外,还包括了如位置坐标.水平速度.垂直速度等一系列用于模拟小球运动的成员变量和一些方法. Movable类: package com.ball;

  • Android开发多手指触控事件处理

    目录 正文 触摸事件 事件类型 手指索引 手指ID 多手指事件处理 支持多手指的滑动控件 总结 正文 多点触控,一直以来都是事件处理中比较晦涩的一个话题.其一是因为它的机制与我们常规思维有点不同,基二是因为我们用的比较少.那么作为一个有点追求的Android开发者,我们必须要掌握这些,这样可以提高代码的格调. 写这篇文章还是有点难度的,我反反复复修改了好多次,真的是删了又改,改了又删,只为把多点触控讲得明明白白.最后我决定把本文分为三部分进行讲解 讲解多手指触摸的一些关键性概念.虽然这部分概念非

  • Android自定义view实现拖动小球移动

    Android应用界面中可以看得见的都是由一个个的View所组成的,几乎所有的可视的控件都是基于View写的.在View中提供了对touch也就是手势的捕获和传递,我们可以对View里面手势的重写来达到我们所需要的特性.比如说我们现在要做一款游戏,内容很简单,就是要实现让如图所示的一个黑色的小球在根据手指移动而在手机屏幕内移动. 我们可以重写View里面的public boolean onTouchEvent(MotionEvent event)方法,来获取到所有的手势操作,再从中选择出所需要的

随机推荐