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;
}
}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android实现底部tabbar按钮突出效果
  2. Android学习经验B
  3. 编程回忆之Android回忆(Android(安卓)Sock
  4. Android(安卓)调用js,传对象到js里面使用a
  5. Android屏幕直播方案
  6. Android(安卓)连接WIF获取的信息剖析
  7. Android.mk语法说明(android ndk开发)
  8. 源码解析Android中的事件处理
  9. Android登录记住密码,AES加密保存密码
  10. 如何在Windows上设置Android环境变量/路