预备工作:
1、两张图片,一张背景图,一张拖动的图。
2、新建一个Android工程的,我的Activity名字为Activity_basketball,同时在同一个包下面新建一个java类,用于编写实现功能的相关代码,我拍的java类名字为basketball_view。
xml文件:
FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/ground"
android:id="@+id/mylayout"
tools:context=".Activity_basketball">
</FrameLayout>
java类代码:
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 basketball_view extends View {
public float bitmapX;//存放篮球的X坐标
public float bitmapY;//存放篮球的Y坐标
public basketball_view(Context context){
super(context);
bitmapX=290;
bitmapY=130;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint=new Paint();//创建一个画笔对象
//在篮球场背景图中画出篮球
Bitmap bitmap= BitmapFactory.decodeResource(this.getResources(),R.mipmap.ball);
canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
if (bitmap.isRecycled()){
bitmap.recycle();
}
}
}
Activity_basketball代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
public class Activity_basketball extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basketball);
FrameLayout frameLayout=findViewById(R.id.mylayout);//在主活动中载入篮球
final basketball_view basketball=new basketball_view(this);
//设置触摸事件监听器
basketball.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
basketball.bitmapX= motionEvent.getX();
basketball.bitmapY= motionEvent.getY();
basketball.invalidate();
return true;
}
});
frameLayout.addView(basketball);
}
}
实现效果: