2013-07-17 3 views
0

Я показываю панорамную фотографию, и я хочу, чтобы мой ImageView двигался в соответствии с ориентацией датчика (ориентация моего телефона определяет вид изображения, и он слишком широкий, чтобы отображать его полностью сразу). Когда я вызываю методы, которые меняют мой ImageView (например, setX), мое приложение выходит из строя. Я делаю это в потоке пользовательского интерфейса, поэтому я не знаю, почему это не работает. Код, который относится к датчику, работает нормально.Перемещение ImageView на HorizontalScrollView

Любая помощь будет оценена по достоинству.

public class ImageActivity extends Activity 
{ 
private ImageView imageView; 
private LocationManager locationManager; 
private String provider; 
private SensorManager sensorManager; 
public float val = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_image); 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    provider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(provider); 
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); 
    sensorManager.registerListener(new CustomOrientationListener(), sensor, 
          SensorManager.SENSOR_DELAY_GAME); 

    //imageView = (ImageView) findViewById(R.id.imageView1);  

} 


class CustomOrientationListener implements SensorEventListener { 

     public CustomOrientationListener() {} 

     @Override 
     public void onAccuracyChanged(Sensor sensor, int accuracy) {} 

     @Override 
     public void onSensorChanged(SensorEvent event) { 
      final float[] values; 
      if(event.sensor.getType() == Sensor.TYPE_ORIENTATION){ 
       values = event.values; 
       runOnUiThread(new Runnable(){ 

       @Override 
       public void run() { 
        imageView.setTranslationX((int)values[0]); 

       } 

       }); 
      } 

     } 

    } 

}

+1

Опубликовать текст исключения –

+0

Я тестирую его на своем телефоне, и он просто говорит, что приложение падает, или вы имеете в виду какие-то журналы? Если да, где я могу их найти? – user2587107

+1

Если у вас установлен sdk и на вашем пути в терминале вы можете запустить: adb logcat. Большинство IDE также имеют встроенную версию, которую немного легче читать (вы можете искать такие вещи, как исключения). Всякий раз, когда приложение падает, вы должны увидеть исключение и трассировку стека. –

ответ

-1

Да, у меня есть Android SDK на моем компьютере, но я проверить мое приложение на моем телефоне, так что я не знаю, как читать журналы, потому что я не знаю, Whe

Смежные вопросы