Benim android uygulamasında panorama görüntüsü var ve TYPE_ORIENTATION sensörü kullanarak telefon hareketlerine göre bu görüntüyü döndürüyorum, hem manzara hem de potrait için çalışıyor. İşte rotasyon mantığı kodu. Cihazın yönelim yanlış yönde (tam tersi yönde) için dönecektir ters görüntünün değiştirirseAndroid'de Upside down Orientation nasıl belirlenir?
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ORIENTATION:
float[] insideval = getValPoints();
event.values[1]=(float) (event.values[1]*2.8);
event.values[2]=(float) (event.values[2]*2.8);
setValPoints(event.values.clone());
if (insideval != null) {
float check= insideval[0] - event.values[0];
if (-1<=check && check <=1) {
//Animation stoped
this.stopAnimation();
}else{
if (getdefaltDeviceOrientation() == ORENTATION_LANDSCAPE) {
// Natural Orientation is landscape
if (getcurrentDeviceOrientation() == 1) {
//ORIENTATION_PORTRAIT
startPoint = CGPoint.CGPointMake(insideval[2], insideval[1]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]+ event.values[2], insideval[1]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]);
}
} else if (getcurrentDeviceOrientation() == 2) {
//Log.i(TAG, "ORIENTATION_LANDSCAPE");
startPoint = CGPoint.CGPointMake(insideval[1], insideval[2]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]+event.values[1] ,insideval[2]);
}
}
} else if (getdefaltDeviceOrientation() == ORENTATION_PROTRAIT) {
// Natural Orientation is portrait
if (getcurrentDeviceOrientation() == 1) {
//Log.i(TAG, "ORIENTATION_PORTRAIT");
startPoint = CGPoint.CGPointMake(insideval[1], insideval[2]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]+ event.values[1], insideval[2]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]);
}
} else if (getcurrentDeviceOrientation() == 2) {
//Log.i(TAG, "ORIENTATION_LANDSCAPE");
startPoint = CGPoint.CGPointMake(insideval[2], insideval[1]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]+event.values[2],insideval[1]);
}
}
}
this.drawView();
}
}
break;
}
}
Bu kadar sorun olduğunu. Bu sorunu nasıl düzeltebilirim ve cihazlar yönlendirmesi baş aşağı değiştiğinde ne olur?
Teşekkürler.