您的位置:首页 > 移动开发 > Android开发

Android 自定义 按当前view的宽高进行矩形移动内容图

2016-04-18 10:56 543 查看


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

/**
* 按当前view的宽高进行矩形移动 内容图
*
* author : stone
* email : aa86799@163.com
* time : 16/4/15 10 18
*/
public class RectTransView extends View {

private Bitmap mBitmap;

private int bw;
private int bh;
private int l, t;
private int speed = 10;
private int state;
private float degress;

public RectTransView(Context context) {
super(context);
// setBackgroundColor(Color.parseColor("#dcaa0000"));
}

public void setBitmapResid(int resid) {
mBitmap = BitmapFactory.decodeStream(getResources().openRawResource(resid));
bw = mBitmap.getWidth();
bh = mBitmap.getHeight();

invalidate();
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if (mBitmap == null) {
return;
}
int w = getMeasuredWidth();
int h = getMeasuredHeight();

Matrix matrix;
speed = (int) (Math.random() * 20);
switch (state) {
case 0: {
if (l + speed <= w - bw) {
l += speed;
} else {
l = w - bw;
state = 1;
}
}
break;

case 1: {
if (t + speed <= h - bh) {
t += speed;
} else {
t = h - bh;
state = 2;
}
}
break;

case 2: {
if (l > speed) {
l -= speed;
} else {
l = 0;
state = 3;
}

}
break;

case 3: {
if (t > speed) {
t -= speed;
} else {
t = 0;
state = 0;
}
}
break;
}

matrix = new Matrix();
matrix.postTranslate(l, t);
degress += 4;
matrix.postRotate(degress);

Bitmap createBitmap = Bitmap.createBitmap(mBitmap, 0, 0, bw, bh, matrix, true);

canvas.drawBitmap(createBitmap, null, new Rect(l, t, l + bw, t + bh), null);

invalidate();
}
}

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);

RectTransView anim = new RectTransView(this);
anim.setBitmapResid(R.mipmap.ic_launcher_android);

int widthPixels = getResources().getDisplayMetrics().widthPixels;
int heightPixels = getResources().getDisplayMetrics().heightPixels;
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
widthPixels/2, heightPixels/2);
params.addRule(RelativeLayout.CENTER_IN_PARENT);

layout.addView(anim, params);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: