2011-12-20 4 views
3

私は、ユーザの指を左右にドラッグして画像を回転させる最善の方法と回転角度を理解しようとしています。2アンドロイドの指回転ジェスチャリスナ

float x1 = lastEvent[0] - lastEvent[1]; 
float y1 = lastEvent[2] - lastEvent[3];  
float degrees1 = (float)(Math.atan2(y1, x1));  
float x2 = event.getX(0) - event.getX(1); 
float y2 = event.getY(0) - event.getY(1); 
float degrees2 = (float)(Math.atan2(y2, x2)); 

float degrees = (float) Math.toDegrees(degrees2-degrees1); 

しかし、私が望むように回転しません。回転ジェスチャーのリスナーはありますか?あなたは良い説明を探しているならおかげ

答えて

5
/** Determine the degree between the first two fingers */ 
    private float rotation(MotionEvent event) { 
     double delta_x = (event.getX(0) - event.getX(1)); 
     double delta_y = (event.getY(0) - event.getY(1)); 
     double radians = Math.atan2(delta_y, delta_x);  
     if (Constant.TRACE) Log.d("Rotation ~~~~~~~~~~~~~~~~~", delta_x+" ## "+delta_y+" ## "+radians+" ## " 
         +Math.toDegrees(radians)); 
     return (float) Math.toDegrees(radians); 
    } 
0

このlinkは非常に便利です。 Byこのライブラリを使用すると、パッケージを作成し、そのパッケージにSandboxView、TouchManager、およびVector2Dクラスをコピー/過去のクラスをコピーできます。

次に、imageViewの代わりにxmlファイルにFrameLayoutを追加し、コードにリンクします。

try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), mUserImgUri); 
      sandboxView = new SandboxView(mContext, bitmap); 
      sandboxView.setLayoutParams(new FrameLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT)); 
      sandboxView.setVisibility(View.INVISIBLE); 
      frameLayout.addView(sandboxView); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

最後に、次のコードを使用してレイアウトにビットマップを追加します

関連する問題