1. 程式人生 > >安卓-07-開發自定義的View

安卓-07-開發自定義的View

save get ner odi 自定義 span appcompat utf 對象

通常不實用View和ViewGroup類

可以使用繼承View的自定義的View類

思路是:

創建繼承View的自定義類, 在MainActivity.java 中創建自定義類的對象

實踐--跟隨手指移動的小兔子


XML : 設置背景圖片, id

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools" 5 android:id="@+id/mylayout" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:background="@mipmap/earth" 9 tools:context=".MainActivity"> 10 11 </FrameLayout>


創建Rabbit類

 1 package com.example.myview;
 2 
 3 import android.content.Context;
 4 import android.graphics.Bitmap;
 5 import android.graphics.BitmapFactory;
 6 import android.graphics.Canvas;
 7 import android.graphics.Paint;
 8 import android.view.View;
 9 
10 public class RabbitView extends View {
11 public float bitmapX; 12 public float bitmapY; 13 public RabbitView(Context context) { 14 super(context); 15 bitmapX = 290; 16 bitmapY = 130; 17 } 18 19 @Override 20 protected void onDraw(Canvas canvas) { 21 super.onDraw(canvas); 22 Paint paint = new Paint(); // 創建畫筆對象 23 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.mipmap.robbit); // 設置圖像, 將兔子圖片作為參數傳入 24 canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint); // 通過canvas組件畫出兔子 25 if(bitmap.isRecycled()) { // 回收 26 bitmap.recycle(); 27 } 28 } 29 }


在MainActivity.java類中創建Rabbit類的對象並設置Touch事件

 1 package com.example.myview;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.MotionEvent;
 6 import android.view.View;
 7 import android.widget.FrameLayout;
 8 
 9 public class MainActivity extends AppCompatActivity {
10 
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15         FrameLayout frameLayout = findViewById(R.id.mylayout);
16         final RabbitView rabbitView = new RabbitView(this);
17         rabbitView.setOnTouchListener(new View.OnTouchListener() {
18             @Override
19             public boolean onTouch(View v, MotionEvent event) {
20                 rabbitView.bitmapX = event.getX();
21                 rabbitView.bitmapY = event.getY();
22                 rabbitView.invalidate();
23                 return true;
24             }
25         });
26         frameLayout.addView(rabbitView);
27     }
28 }

安卓-07-開發自定義的View