Android小项目

要求

  • 随鼠标而动的红色坐标
  • 布局:帧布局
  • 任务:创建坐标,可以随鼠标移动

第一步:导入图片

复制图片,选择app->res->mipmap , 粘贴。
选择mipmap-xhdpi,点击OK

第二步:修改xml文件

  1. 修改布局为帧布局(FramLayout)
  2. 添加背景图片:android:background="@mipmap/moon"
  3. 添加背景布局ID,方便接下来调用:android:id="@+id/mylayout"

第三部:新建Java class

新建的JavaClass命名为RedpinView,用来展示Redpin

package com.example.rabbit;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

public class RedpinView extends View { //继承View类
    public float pinmapX; //定义图像位置
    public float pinmapY;

    public RedpinView(Context context) {
        super(context);
        pinmapX=290;
        pinmapY=130;
    }
//右击鼠标,点击Generate-->Override Methods-->onDraw()
    @Override //重写OnDraw方法
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint = new Paint();//创建画笔对象
        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.mipmap.redpin);//位图对象,接受resource对象和图像资源id
        canvas.drawBitmap(bitmap,pinmapX,pinmapY,paint);
        if(bitmap.isRecycled()){ //强制回收图片
            bitmap.recycle();
        }
    }
}

第四步:修改MainActivity

获取布局文件,并且添加Redpin

package com.example.rabbit;

import androidx.appcompat.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.mylayout);//定义布局管理器
        final RedpinView redpinView = new RedpinView(this); //实例化Redpin对象

        //添加触摸事件监听器
        redpinView.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event) { //重写OnTouch,使得Redpin随着手指移动
                redpinView.pinmapX=event.getX();
                redpinView.pinmapY=event.getY();
                redpinView.invalidate();
                return true;
            }
        });
        frameLayout.addView(redpinView);//添加到布局管理器
    }
}

效果图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值