zoukankan      html  css  js  c++  java
  • 安卓-07-开发自定义的View--实践-跟随手指移动的小兔子

    通常不实用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 }
  • 相关阅读:
    网店推广之秘诀
    预言:“你被暴光了没有?” 将成为2010又一网络流行语
    已不联系好多年
    任道而重远
    从思南县看撤县建市对提升城市价值的影响
    我和三十有个约定
    浅谈小学生英语学习方法
    热烈祝贺IT诗人代腾飞官方网站开通啦
    爱情许愿砂
    “走远了” 2010又一网络流行语诞生
  • 原文地址:https://www.cnblogs.com/huangZ-H/p/10636712.html
Copyright © 2011-2022 走看看