Android繪制跟隨手指移動的小球
為了實現(xiàn)一個跟隨手指移動的小球,考慮到開發(fā)自定義的UI組件,這個UI組件將會在一個指定的位置繪制一個小球,這個位置可以動態(tài)改變。當用戶手指在屏幕上拖動時,程序監(jiān)聽到這個手指的動作,并且傳入UI組件,通知組件重繪即可。話不多說,上代碼:
在java的DrawView中:
package com.example.test01;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import androidx.annotation.Nullable;
public class DrawView extends View {
private float currentX=40f;
private float currentY=50f;
// 定義并創(chuàng)建畫筆
private Paint p=new Paint();
public DrawView(Context context) {
super(context);
}
public DrawView(Context context, @Nullable AttributeSet set) {
super(context, set);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 設(shè)置畫筆的顏色
p.setColor(Color.RED);
// 設(shè)置一個小球
canvas.drawCircle(currentX,currentY,15F,p);
}
// 為該事件的觸碰事件重寫處理方法
@Override
public boolean onTouchEvent(MotionEvent event) {
// 修改成員變量
currentX=event.getX();
currentY=event.getY();
// 通知當前組件重繪自己
invalidate();
// 返回true說明該處理方法已經(jīng)處理自己
return true;
}
}
在java的MainActivity中:
package com.example.test01;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
}
在layout中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<com.example.test01.DrawView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
運行效果如下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義View 仿QQ側(cè)滑菜單的實現(xiàn)代碼
這篇文章主要介紹了Android自定義View 仿QQ側(cè)滑菜單的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-08-08
flutter自定義InheritedProvider實現(xiàn)狀態(tài)管理詳解
這篇文章主要為大家介紹了flutter自定義InheritedProvider實現(xiàn)狀態(tài)管理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
RxJava 1升級到RxJava 2過程中踩過的一些“坑”
RxJava2相比RxJava1,它的改動還是很大的,那么下面這篇文章主要給大家總結(jié)了在RxJava 1升級到RxJava 2過程中踩過的一些“坑”,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下來要一起看看吧。2017-05-05
Android自定義View實現(xiàn)廣告信息上下滾動效果
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)廣告信息上下滾動的具體代碼,感興趣的小伙伴們可以參考一下2016-05-05
Android TextView 去掉自適應(yīng)默認的fontpadding的實現(xiàn)方法
這篇文章主要介紹了Android TextView 去掉自適應(yīng)默認的fontpadding的實現(xiàn)方法的相關(guān)資料,希望通過本文大家能夠掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09
Android webview如何加載HTML,CSS等語言的示例
本篇文章主要介紹了Android webview如何加載HTML,CSS等語言的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

