리소스에서 bitmap을 읽어오고 화면에 출력한 후 touch를 이용해서 drag하는 예제
package com.jjihun.bitmaptest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class BitmapView extends View {
Bitmap bitmap;
int width;
int height;
int dx;
int dy;
public BitmapView(Context context, AttributeSet attrs) {
super(context, attrs);
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.yuandi);
// 얘 뒤져보면 byte[] 에서 bitmap생성하는 것도 있심
width = bitmap.getWidth();
height = bitmap.getHeight();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(
bitmap, // 출력할 bitmap
new Rect(0,0,width,height), // 출력할 bitmap의 지정된 영역을 (sub bitmap)
new Rect(dx,dy,dx+width,dy+height), // 이 영역에 출력한다. (화면을 벗어나면 clipping됨)
null);
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
// 주루룩 drag했을 경우 히스토리가 모두 기록되어서 전달됨
int length=event.getHistorySize();
float sx, sy, ex, ey;
if (length != 0) {
sx = event.getHistoricalX(0);
sy = event.getHistoricalY(0);
ex = event.getHistoricalX(length-1);
ey = event.getHistoricalY(length-1);
dx += (int)(ex-sx);
dy += (int)(ey-sy);
}
invalidate();
break;
}
return true;
}
}
'Programming > Android' 카테고리의 다른 글
[Android] EditText에서 키보드의 특정 키 입력을 막기 (0) | 2010.07.27 |
---|---|
[Android] layout 비율 (3) | 2010.07.27 |
[Android] 비율고정을통한 레이아웃 설계 (0) | 2010.07.22 |
[Android] 얼굴인식기능 FaceDetector Class (0) | 2010.07.21 |
[Android] Path를 이용한 그리기(Canvas) (0) | 2010.07.20 |