올해는 머신러닝이다.
android image drag(드래그 앤 드랍) 본문
리소스에서 bitmap을 읽어오고 화면에 출력한 후 touch를 이용해서 drag하는 예제
추천 참고예제 :
http://stackoverflow.com/questions/4255859/touch-and-drag-image-in-android
http://www.droidnova.com/playing-with-graphics-in-android-part-iv,182.html
출처 : http://blackzaket.blog.me/80101582245
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;
}
}
'Android > Tip&Tech' 카테고리의 다른 글
안드로이드 로그인 관련 예제 (0) | 2011.05.03 |
---|---|
<안드로이드 팁]edittext에 원하는 키보드옵션넣기 (0) | 2011.05.02 |
예제소스모음 (4) | 2011.05.02 |
Custom Tab Tip (1) | 2011.04.29 |
Android selector 관련 팁 (0) | 2011.04.29 |