단말기를 가로 또는 세로모드로 고정시키고도
현재 가로로 눞여있는지 세로로 서있는지 알아봐야 할때가 있다.
이럴 때는 기울기 센서라고도 불리는 가속도 센서(Accelerometer Sensor)를 이용하면 간단하다.
아래는 세로모드에서 카메라로 사진을 찍었을 경우
단말기 상황(각도)에 맞게 사진을 회전시키는 예의 일부이다.
mDegrees 각도로 사진을 회전시키면 된다.
private SensorManager mSensorManager;
private Sensor mAccSensor;
private float mDegrees;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.
main
);
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccSensor, SensorManager.SENSOR_DELAY_UI);
mDegrees = 0;
}
@Override
protected void onDestroy() {
super.onDestroy();
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
switch(event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
float x = event.values[0];
float y = event.values[1];
//회전시킬 각도 저장
//단말기마다 x,y 기준 수치는 다를 수 있음
if(x > 5 && y < 5)
mDegrees = 0; //세로로 슴
else if(x < -5 && y > -5)
mDegrees = 180; //세로로 뒤집힘
else if(x > -5 && y > 5)
mDegrees = -90; //가로 왼쪽으로 눞힘
else if(x < 5 && y < -5)
mDegrees = 90; //가로 오른쪽으로 눞힘
break;
}
}
도움이 되셨다면~ 정성으로 빚은 저희 앱! 많은 이용 바래요:)
https://meorimal.com/index.html?tab=spaceship
https://meorimal.com/subway.html
'개발 > android' 카테고리의 다른 글
Fragment에서 startActivityForResult() 호출시 onActivityResult() requestCode 문제 (0) | 2015.06.22 |
---|---|
버튼 누름 효과를 만드는 2가지 방법 (2) | 2015.04.19 |
Surface View에서 간단한 이미지버튼 손수 만들기 (2) | 2014.10.19 |
게임에 꼭 필요한 난수, 간단하게 확률대로 발생시키기 (0) | 2014.09.14 |
점의 선대칭 이동 공식을 코드로 짜보자 (0) | 2014.08.15 |