/** * Created by qianxin on 16/11/25. */ public class ZoomImageView extends View { private Bitmap bitmap; private Paint paint; //放大倍数 private static final int FACTOR = 3; //放大镜的半径 private static final int RADIUS = 100; private int centerX ,centerY; public ZoomImageView(Context context) { super(context); bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.zsh); Bitmap bmp = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() * FACTOR, bitmap.getHeight() * FACTOR, true); //制作一个圆形的图片(放大的局部),盖在canvas上面 BitmapShader shader = new BitmapShader(bmp, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setShader(shader); centerX = centerY = RADIUS; } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.drawBitmap(bitmap, 0, 0, paint ); //画制作好的圆形图片 canvas.drawCircle(centerX, centerY, RADIUS, paint); } @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); Matrix matrix = new Matrix(); matrix.setTranslate( -x * (FACTOR-1), -y * (FACTOR-1)); paint.getShader().setLocalMatrix(matrix); centerX = x; centerY = y; invalidate(); return true; } }