Android自定义View实现跟随手指移动的小兔子

本文实例为大家分享了Android自定义View实现跟随手指移动的小兔子,供大家参考,具体内容如下

自定义的View实现跟随手指的小兔子

按前面的例子新创建一个project,再在project中新创建一个module

将需要的背景图和兔子图片放入mipmap中

将布局管理器改为帧布局管理器

<?xml version="1.0" encoding="utf-8"?>
//修改为帧布局管理器FrameLayout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"

 android:layout_width="match_parent" android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"

 android:background="@mipmap/bg1" #设置背景图
 android:id="@+id/activity_main" # 设置id

 tools:context="com.example.MainActivity">

 //删除原来的文本框
</FrameLayout>

设计结果:

新建一个java class

新建java class后自动生成的代码

package com.example;

/**
 * Created by hahaha on 2020/10/30.
 */

public class RabatView {
}

修改设计:自定义RabatView.java

package com.example;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

/**
 * Created by hahaha on 2020/10/30.
 */

//继承自View类
public class RabatView extends View{
 //设置小兔子位置
 public float bitmipX;
 public float bitmipY;

 public RabatView(Context context) {
 super(context);
 bitmipX = 290;
 bitmipY = 130;
 }

 @Override
 protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);
 // 定义绘图对象
 Paint paint = new Paint();
 //定义绘图内容
 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.mipmap.rabat);

 //开始绘图
 canvas.drawBitmap(bitmap, bitmipX, bitmipY, paint);
 if (bitmap.isRecycled()){
 bitmap.recycle();// 回收图片
 }
 }
}

MainActivity.java调用

package com.example;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 //定义帧布局管理器对象,要强制转换类型
 FrameLayout frameLayout = (FrameLayout) findViewById(R.id.activity_main);
 //定义调用自定义RabatView 类对象
 final RabatView rabat = new RabatView(this);
 //设置触发事件
 rabat.setOnTouchListener(new View.OnTouchListener() {
 @Override
 public boolean onTouch(View view, MotionEvent motionEvent) {
 rabat.bitmipX = motionEvent.getX();//获取重新绘制图片的X位置
 rabat.bitmipY = motionEvent.getY();//获取重新绘制图片的Y位置
 rabat.invalidate();

 return true;
 }
 });
 frameLayout.addView(rabat);//添加进布局管理器
 }
}

结果:小兔子随着鼠标移动会移动

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

(0)

相关推荐

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

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

  • Android实现View拖拽跟随手指移动效果

    今天想实现这个功能,但是网上搜索代码,都是利用setPadding,setMargin 等方法去实现的,这在Android 4.0 以前是没问题的,但是,android 4.0 后系统已经提供了更简单的方法给我们用了,就是setTranslationX() 和setTranslationY() .这两个是View的属性方法.现在我就用这两个方法实现一个View可以跟着手指移动拖拽的效果.代码非常非常简单: public class DragView extends TextView { floa

  • 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中View跟随手指移动效果

    最近做了一个项目中,其中遇到这样的需求要求图片移动到手指触碰的地方.具体实现代码如下所示: package com.example.plane; import Android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Display; import android.view.KeyEvent; import android.view.Menu; i

  • Android自定义View实现跟随手指移动的小兔子

    本文实例为大家分享了Android自定义View实现跟随手指移动的小兔子,供大家参考,具体内容如下 自定义的View实现跟随手指的小兔子 按前面的例子新创建一个project,再在project中新创建一个module 将需要的背景图和兔子图片放入mipmap中 将布局管理器改为帧布局管理器 <?xml version="1.0" encoding="utf-8"?> //修改为帧布局管理器FrameLayout <FrameLayout xmln

  • Android自定义View圆形和拖动圆、跟随手指拖动效果

    单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可 我在第一次自定义View圆遇到的几个Bug: 1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了 2.我在定义充满属性match_parent的时候运行会报错,什么方法都用了就是不行,耐心等待过一会就好了-有可能是studio没来

  • Android自定义View圆形和拖动圆跟随手指拖动

    单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可 我在第一次自定义View圆遇到的小问题: 1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了 2.在布局里自定的view会提示编译 点击Build编译一下就好了 下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承View 实

  • Android自定义view圆并随手指移动

    本文实例为大家分享了Android自定义view圆并随手指移动的具体代码,供大家参考,具体内容如下 main代码 public class MainActivity extends AppCompatActivity { private int screenW; //屏幕宽度 private int screenH; //屏幕高度 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved

  • Android自定义View实现等级滑动条的实例

     Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点: 绘制点的时候把X值存到集合中. 然后绘制背景图片,以及图片上的数字. 点击事件down的时候,换小图片为大图片.move的时候跟随手指移动. up的时候根据此时的X计算最近的集合中的点,然后自动吸附回去. 1,自定义属性 <?xml version="1.0" encoding="utf-8"?> <resources> <de

  • Android自定义View实现拖拽效果

    腾讯QQ有那种红点拖动效果,今天就来实现一个简单的自定义View拖动效果,再回到原处,并非完全仿QQ红点拖动. 先来看一下效果图 简单说一下实现步骤 1.创建一个类继承View 2.绘制出一个小球 3.重写onTouchEvent,来根据手指放下,移动,抬起,来控制小球 4.直接在布局中引用 先贴一张图看下View的坐标系 下面就贴一下代码,最后会给出源码 public class CustomView extends View { private int lastX; private int

  • Android自定义View仿探探卡片滑动效果

    Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天来换一种实现思路,只用一个自定义的ViewGroup来搞定这个实现. 下面我们先看一下实现的效果: 这个自定义View用法也很简单,首先从github上下载或者fork这个项目,在布局中添加: <com.liyafeng.view.swipecard.SwipeCardLayout android:id="@+id/scl_layout" a

  • Android自定义View实现拖动自动吸边效果

    本文实例为大家分享了Android自定义View实现拖动自动吸边的具体代码,供大家参考,具体内容如下 自定义View,一是为了满足设计需求,二是开发者进阶的标志之一.随心所欲就是我等奋斗的目标!!! 效果 实现逻辑 明确需求 1.实现控件跟随手指拖动2.实现控件自动贴边 整理思路 1.既然要实现控件拖动,那么就离不开onTouchEvent()这个方法,需要监听里面的按下和滑动事件.2. 要实现自动贴边,需要监听onTouchEvent()中手指离开屏幕事件.对于贴边的过程,我们用属性动画来解决

  • Android自定义View实现折线图效果

    下面就是结果图(每种状态用一个表情图片表示): 一.主页面的布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height=&quo

  • Android自定义View实现开关按钮

    前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时项目中经常会有一些苛刻的需求,我们可以在GitHub上找到各种各样的效果,能用则用,不能用自己花功夫改改也能草草了事.不过随着工作经验和工作性质,越来越觉得自定义View是时候有必要自己花点功夫研究一下. 一.经过这两天的努力,自己也尝试着写了一个Demo,效果很简单,就是开关按钮的实现. 可能有的人会说这效果so easy,找UI切三张图就完事了,何必大费周折自定义.

随机推荐