2011-06-08 121 views

回答

5

要移動圖像,請參閱this example中的操作方法。基本上,關鍵是獲得某種類型的矩陣,並且基於某些輸入來操縱它,在這個例子中是用戶的觸摸/拖動。下面的代碼並不完美,但它顯示了執行拖動所需的鍵盤命令和類。有關更多詳細信息,請參閱鏈接的文章。

Matrix matrix = new Matrix(); 
savedMatrix.set(matrix); 
matrix.postTranslate(event.getX() - start.x) 
ImageView view = (Some image view here) 
view.setImageMatrix(matrix); 

接下來的部分是以某種方式使用加速度計來獲得輸入。我將會告訴你如何最好地把兩者結合在一起。我的資料來源是this article。有幾個基本步驟。

第一步是註冊偵聽器,並由此代碼完成。

SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
Sensor sensor = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0); 

下一步是註冊一個傳感器監聽器。最後一點是顯示傳感器監聽器的外觀。請注意,加速計有3個輸出,每個x,y和z座標都有一個輸出。

@Override 
protected void onResume() { 
    super.onResume(); 
    sensorManager.registerListener(accelerationListener, sensor, 
      SensorManager.SENSOR_DELAY_GAME); 
} 

@Override 
protected void onStop() { 
    sensorManager.unregisterListener(accelerationListener); 
    super.onStop(); 
} 

private SensorEventListener accelerationListener = new SensorEventListener() { 
    @Override 
    public void onAccuracyChanged(Sensor sensor, int acc) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     x = event.values[0]; 
     y = event.values[1]; 
     z = event.values[2]; 
    } 

}; 

您的下一步將要弄清楚您的應用程序的x,y和z值。我建議你使用Log.v(TAG,...)聲明記錄每一項。玩弄傾斜它,並找出你想要做什麼。調整它直到它具有正確的靈敏度,通過查看它距離直線上下多遠,以及改變圖像的x和y座標的某種速率。祝你好運!

+0

hii Pearsonartphoto謝謝你的回覆,我嘗試過ur代碼,但它不工作。事情是event.values []返回m^2中的值,如何將dis值轉換爲corrdinate系統值。 – dharan 2011-06-08 06:56:43

相關問題