package com.test;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
public class testActivity extends Activity implements SensorEventListener{
/** Called when the activity is first created. */
private static final String LOG_TAG = "BABUKUMA";
private SensorManager sensorManager;
private SensorView sensorView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sensorView = new SensorView(this);
setContentView(sensorView);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
List<Sensor>sensor=sensorManager.getSensorList (Sensor.TYPE_ACCELEROMETER);
if(sensor.size()>0){
sensorManager.registerListener(this, sensor.get(0), SensorManager.SENSOR_DELAY_GAME);
}
}
@Override
protected void onDestroy(){
super.onDestroy();
sensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
Sensor sensor = event.sensor;
switch (sensor.getType()){
case Sensor.TYPE_ACCELEROMETER:
sensorView.move(event.values[0], event.values[1]);
break;
default:
break;
}
}
class SensorView extends View{
private static final int KUMA_SIZE = 50;
private Bitmap kuma;
private int w;
private int h;
private float x;
private float y;
public SensorView(Context context){
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
kuma = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);
}
public void move(float mx, float my){
this.x -= (mx * 4f);
this.y += (my * 4f);
if(this.x < 0){
this.x = 0;
} else if((this.x + KUMA_SIZE)>this.w){
this.x = this.w - KUMA_SIZE;
}
if (this.y<0){
this.y = 0;
} else if((this.y + KUMA_SIZE)> this.h){
this.y = this.h - KUMA_SIZE;
}
invalidate();
}
protected void onSizeChanged(int w, int h, int oldw, int oldh){
this.w = w;
this.h = h;
this.x = (w - KUMA_SIZE)/2f;
this.y = (h - KUMA_SIZE)/2f;
}
@Override
protected void onDraw(Canvas canvas){
canvas.drawBitmap(kuma, x, y, null);
}
}
}
예제 소스 인데요.. setContentView(sensorView);는 클래스를 화면에 보이게 하는 건데요 이걸 setContentView(R.layout.main)으로 하고 싶어요 ㅠ
그리고 kuma = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);는 drawable에 있는 아이콘을 바로 불러오는 건데. 이 아이콘을 XML의 imageview에 넣은 후 불러오고 싶은데요. 어떻게 소스를 바꿔야 할 까요 ㅠ 언어쪽은 부족하다보니 ㅠ 고수님들의 답변 부탁드립니다 ㅠ
답변 감사합니다 ㅎ 해봤는데 다른 오류는 안 떠서 아직 활욜을 못 하고 있네요 ㅠ ㅎㅎ
이미지에 대한 부분은 kuma = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon); 를 kuma = (ImageView)findViewById(R.id.imageView01);에서 불러온 kuma를 Bitmap형식으로 바꿔서 사용을 하고 싶다는 거였습니다 ㅎ
이렇게 하시면 imageView에 로드된 이미지를 Bitmap으로 가져올수 있습니다.
그냥가자님 답변 감사합니다 ㅎ
하나만 더 여쭤볼게요 ㅠ ㅎ
위쪽에 setContentView(sensorView); 를 setContentView(R.layout.main); 으로 한 후에
fr.addView(sensorView);
sensorView = new SensorView(this);
fr = (FrameLayout)findViewById(R.id.Frame);
으로 했더니
sensorView = new SensorView(this);
와
kuma = ((BitmapDrawable)iv.getDrawable()).getBitmap();
에서 오류가 나네요 ㅠ
어찌하여 이럴까요 ㅠㅠ
고수는 아니고.. 질문을 제가 잘 이해한건진 모르겠지만 조금 적어볼게요
우선 imageview에 이미지를 넣은 후 불러오고 싶다고 하셨잖아요
그 부분은 <ImageView android:background="@drawable/icon"/> 이렇게 작성하시면 될듯하구요
물론 ID도 적어줘야겠죠? 전 생략한거랍니다 ^^;;
그리고 setContentView(sensorView); 이 부분은요 main.xml파일을 하나 우선 만드시구요
setContentView(R.layout.main) 이렇게 바꾸세요 바꾸실때 sensorView = new SensorView(this);
지우는거 잊지 마시구요 그럼 코드들이 빨간 줄로 나올거에요
그 부분은 코드대로 맞추시면 되요 ^^한번 해보세요
제대로된 답변인진 모르겠네요