android canvas显示图片,android 利用Canvas显示局部图片

package MyBitMap_1.code;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Rect;

import android.util.DisplayMetrics;

import android.util.Log;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.view.View;

public class MyView extends View {

private static int mScreenHeight;

private static int mScreenWidth;

private double fScale = 1.0;

private int xOffset = 0;

private int yOffset = 0;

private int xDist = 0;

private int yDist = 0;

private int xOffset_T = 0;

private int yOffset_T = 0;

private Bitmap bitMap1;

public MyView(Context context )

{

super(context);

Initialize();

}

private void Initialize()

{

DisplayMetrics dm = getResources().getDisplayMetrics();

mScreenWidth = dm.widthPixels;

mScreenHeight = dm.heightPixels;

Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.trail );

bitMap1 = bmp;

xDist = mScreenWidth;

yDist = mScreenHeight;

}

@Override

protected void onDraw(Canvas canvas )

{

canvas.drawColor(Color.WHITE);

xDist = (int)(mScreenWidth);

yDist = (int)(mScreenHeight);

Rect src = new Rect((int)(xOffset*fScale),(int)(yOffset*fScale),(int)((xDist+xOffset)*fScale),(int)((yDist+yOffset)*fScale));

Log.i("Rollrock","OnDraw" + xOffset + "  " + xDist );

Rect dest = new Rect(0,0,mScreenWidth,mScreenHeight);

canvas.drawBitmap(bitMap1, src,dest, null);

}

@Override

public boolean onKeyDown(int keyCode , KeyEvent event )

{

Log.i("Rollrock", "" + keyCode + "  " + event.getAction() + " " + event.getKeyCode());

if( KeyEvent.KEYCODE_DPAD_LEFT == keyCode )

{

}

else if( KeyEvent.KEYCODE_DPAD_RIGHT == keyCode )

{

}

else if( KeyEvent.KEYCODE_DPAD_UP == keyCode )

{

fScale += 0.1;

this.invalidate();

}

else if( KeyEvent.KEYCODE_DPAD_DOWN == keyCode )

{

fScale -= 0.1;

this.invalidate();

}

return super.onKeyDown(keyCode, event);

}

@Override

public boolean onTouchEvent(MotionEvent event )

{

int action = event.getAction();

int x = 0;

int y = 0;

switch(action)

{

case MotionEvent.ACTION_DOWN:

xOffset_T = (int)event.getX();

yOffset_T = (int)event.getY();

break;

case MotionEvent.ACTION_MOVE:

break;

case MotionEvent.ACTION_UP:

x = (int)event.getX();

y = (int)event.getY();

xOffset += xOffset_T - x;

yOffset += yOffset_T - y;

this.invalidate();

break;

}

return true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值