Android自定義View實現跟隨手指移動的小兔子
阿新 • • 發佈:2020-11-02
本文例項為大家分享了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);//新增進佈局管理器 } }
結果:小兔子隨著滑鼠移動會移動
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。