2012-09-28 13 views
6

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.

cevap

İlgili konular