这是MainActivity.java package com.example.qqxiangce; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.GridLayout; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private ImageView[] img=new ImageView[12]; private int []imagePath=new int[]{ R.mipmap._0, ,R.mipmap._1 ,R.mipmap._2 ,R.mipmap._3 ,R.mipmap._4,R.mipmap._5 ,R.mipmap._6 ,R.mipmap._7 ,R.mipmap._8 ,R.mipmap._9 ,R.mipmap._10 ,R.mipmap._11 }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridLayout layout=(GridLayout)findViewById(R.id.layout); for(int i=0;i<imagePath.length;i++){ img[i]=new ImageView(MainActivity.this); img[i].setImageResource(imagePath[i]); img[i].setPadding(2,2,2,2); ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(116,68); img[i].setLayoutParams(params); layout.addView(img[i]); } } }
这是activity_main.xml的
<?xml version="1.0" encoding="utf-8"?> <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:id="@+id/layout" android:orientation="horizontal" android:rowCount="3" android:columnCount="4" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> </FrameLayout>
这是写一个3行4列放12张图片的一个界面,具体效果如下:
然后又写了一个跟随移动的兔子,
MainActivity的代码
package com.example.myview; 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=findViewById(R.id.mylayout); final RabbitView rabbit=new RabbitView(this); rabbit.setOnTouchListener(new View.OnTouchListener(){ @Override public boolean onTouch(View v,MotionEvent event){ rabbit.bitmapX=event.getX(); rabbit.bitmapY=event.getY(); rabbit.invalidate(); return true; } }); frameLayout.addView(rabbit); } }z这是Rabbit的代码
package com.example.myview; 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 RabbitView extends View { public float bitmapX; public float bitmapY; public RabbitView(Context context) { super(context); bitmapX=20; bitmapY=130; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint=new Paint(); Bitmap bitmap= BitmapFactory.decodeResource(this.getResources(),R.mipmap.rabbit); canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint); if(bitmap.isRecycled()){ bitmap.recycle(); } } }z这两个代码要写下同一个包下
这是res\layout\activity_main.xml下的代码
<?xml version="1.0" encoding="utf-8"?> <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:id="@+id/mylayout" android:background="@mipmap/background" tools:context="com.example.myview.MainActivity"> </FrameLayout>
效果图:
鼠标点哪里他就移动哪里