欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-08-07 21:49:35
本文实例为大家分享了android自定义view实现跟随手指移动的小兔子,供大家参考,具体内容如下自定义的view实现跟随手指的小兔子按前面的例子新创建一个project,再在project中新创建一...

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

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

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

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

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

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

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

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

<?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>

设计结果:

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

新建一个java class

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

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

新建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);//添加进布局管理器
 }
}

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

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

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

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