왕초보입니다ㅠㅠ
기초적인 질문일 수도 있겠지만.. 이틀째 너무 답답하여 질문을 올립니다.
앨범에서 선택한 이미지를 불러오되 이것이 움직이게 하는 기능을 구현하고 있습니다..이미지를 Main액티비티에서 불러오
는데요...Bitmap값을 받아오는 것까지는 다른 액티비티에서 잘 받아왔습니다. 그런데 NaviImageView를 불러와야 움직이는 기능을 적용할 수 있는데 아래 밑줄친 부분에서 에러가 납니다..
(아래는 Main 액티비티에서 그부분을 구현하는 코드입니다.)
(먼저, NaviImageView nImageView;로 선언하였습니다.)
else if(requestCode==121212){
byte[] sample = data.getByteArrayExtra("TempBitmap");
if (sample != null) {
Bitmap bm = BitmapFactory.decodeByteArray(sample, 0,sample.length);
//iv2.setImageBitmap(bm);
// Context context = getApplicationContext();
nImageView = new NaviImageView(context);
nImageView.setBitmap(bm);
setContentView(nImageView);
nImageView.setVisibility(View.VISIBLE);
이 부분에서 ImageNavigation이라는 액티비티안에 있는 NaviImageView라는 클래스를 불러오려고 합니다.
그런데 계속 저 밑줄 친 첫번째 부분 context에서 에러가 납니다. ImageNavigation을 넣어도 안되고 그렇다고 this를 넣는 것도 아닌 것 같아 이렇게 질문 올립니다..
아래 코드는 ImageNavigation.java파일입니다.
public class ImageNavigation extends Activity {
//NaviImageView nImageView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// nImageView = new NaviImageView(this);
// nImageView.setBitmap( BitmapFactory.decodeResource(getResources(), R.drawable.a3));
//
// setContentView(nImageView);
}
class NaviImageView extends View {
/** �대�吏�**/
public Bitmap image = null;
private float startX = 0;
private float startY = 0;
private float userX = 0;
private float userY = 0;
final static int TOUCH_TOLERANCE = 4;
public NaviImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public NaviImageView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public NaviImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public void setBitmap(Bitmap temp) {
image = temp;
userX = (image.getWidth() - getWindowManager().getDefaultDisplay().getWidth())/ -2;
userY = (image.getHeight() - getWindowManager().getDefaultDisplay().getHeight())/ -2;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
if ( image != null)
canvas.drawBitmap(image, userX, userY, null);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX();
float y = event.getY();
switch ( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
setUserNavi(x, y);
break;
case MotionEvent.ACTION_MOVE:
processNavi(x, y);
setUserNavi(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
clearStartPoint();
invalidate();
break;
}
return true;
}
private void processNavi(float x, float y) {
if( Math.abs( (startX - x)) > TOUCH_TOLERANCE ||
Math.abs( (startY - y) ) > TOUCH_TOLERANCE ) {
if ( startX > x )
userX -= (startX - x );
else
userX += ( x - startX );
if ( startY < y)
userY += ( y - startY );
else
userY -= (startY - y);
}
}
private void setUserNavi(float x, float y) {
startX = x; startY = y;
}
private void clearStartPoint() {
startX = startY = 0;
}
}
}
이거 이전에 인텐트에 대해서 공부해보시는게 좋을거 같네요...