• 安卓-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 }
  • 相关阅读:
    优步中国大举扩张,2016进军100城市!
    优步中国:2月底前进军广东、湖南、湖北18个城市
    Uber能知道你是不是在开车的时候玩手机
    Uber入驻四川乐山峨眉地区
    南京优步上线黄金区域,接单可享更高奖励!
    优步UBER司机全国各地奖励政策汇总 (2月1日-2月7日)
    成都Uber优步司机奖励政策(2月1日)
    北京Uber优步司机奖励政策(2月1日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(2月1日)
    跨程序共享数据,读取联系人信息
  • 原文地址:https://www.cnblogs.com/huangZ-H/p/10636712.html
Copyright © 2020-2023  润新知