java.lang.Object | |||
↳ | android.graphics.drawable.Drawable | ||
↳ | android.graphics.drawable.DrawableWrapper | ||
↳ | android.graphics.drawable.ScaleDrawable |
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/image"
android:scaleGravity="center"
android:scaleHeight="80%"
android:scaleWidth="80%" >
</scale>
android:scaleHeight="80%" 图片高缩放 80%, (缩放到原来的20%)
android:scaleWidth="80%" 图片宽缩放 80%,
80%表示10000(level的最大值), 就是说1%表示125,
我们让图片缩放50%,就是125*30 = 3750,
private ImageView imageView;
private MyHandler handler;
private Timer timer;
private static class MyHandler extends Handler {
WeakReference<ImageView> refImge;
WeakReference<Timer> refTimer;
public MyHandler(ImageView imageView, Timer timer) {
refImge = new WeakReference<ImageView>(imageView);
refTimer = new WeakReference<Timer>(timer);
}
@Override
public void handleMessage(Message msg) {
if (refImge.get() != null) {
Drawable drawable = refImge.get().getBackground();
drawable.setLevel(drawable.getLevel() + 125);
if (drawable.getLevel() >= 10000) {
if (refTimer.get() != null) {
refTimer.get().cancel();
}
}
}
}
}
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inset_drawable);
((ViewGroup) ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0)).addView(new MyView(this));
imageView = (ImageView) findViewById(R.id.image);
Drawable rotateDrawable = getResources().getDrawable(R.drawable.scale_drawable);
rotateDrawable.setLevel(1);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
imageView.setBackground(rotateDrawable);
}else{
imageView.setBackgroundDrawable(rotateDrawable);
}
imageView.post(new Runnable() {
@Override
public void run() {
timer = new Timer();
handler = new MyHandler(imageView, timer);
timer.schedule(new TimerTask() {
public void run() {
Message msg = handler.obtainMessage();
msg.what = 0x1233;
handler.sendMessage(msg);
}
}, 500,50);
}
});
}
@Override
protected void onDestroy() {
Message msg = handler.obtainMessage();
if(msg!=null){
handler.removeMessages(msg.what);
}
super.onDestroy();
}
class MyView extends View{
private Paint paint;
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setColor(0xff12a4ff);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int w = canvas.getWidth();
int h = canvas.getHeight();
canvas.drawLine(w/2, 0, w/2, h, paint);
canvas.drawLine(0, h/2, w, h/2, paint);
}
}