import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class MyView extends View {
Canvas mCanvas;
Bitmap mBitmap;
Paint mPaint;
float movex, movey;
float X_r, Y_r;
public MyView(Context context) {
super(context);
init();
}
public void init() {
mBitmap = Bitmap.createBitmap(240, 300, Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.studycenter_userinfo_back);
X_r = -mBitmap.getWidth();
Y_r = -mBitmap.getHeight();
mPaint = new Paint();
mPaint.setColor(0xFFFFFFFF);
}
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mBitmap, X_r, Y_r, mPaint);
System.out.println("onDraw");
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
// 点击时的(x,y),记录初始位置
case MotionEvent.ACTION_DOWN:
Animation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
alphaAnimation.setDuration(500);
this.startAnimation(alphaAnimation);
movex = mBitmap.getWidth() / 2;
movey = mBitmap.getHeight() / 2;
X_r = x - movex;
Y_r = y - movey;
mPaint.setAlpha(255);
invalidate();
break;
// 移动时更新(x,y),同时更新图片
case MotionEvent.ACTION_MOVE:
movex = mBitmap.getWidth() / 2;
movey = mBitmap.getHeight() / 2;
X_r = x - movex;
Y_r = y - movey;
invalidate();
break;
// 弹起时更新(x,y),并记录位置
case MotionEvent.ACTION_UP:
mPaint.setAlpha(0);
invalidate();
break;
}
return true;
}
}
}