2012-04-23 100 views
1

我正在實現通過觸摸偵聽器來旋轉圖像的代碼。當用戶觸摸和旋轉圖像時,它正在旋轉,同時它正在變得「縮小」。我需要圖像旋轉而不縮小。這是我實施的代碼。如何通過觸摸偵聽器來旋轉圖像?

public class SeekBarCustomized extends Activity implements OnTouchListener{ 

    //VerticalSeekBar mVerSeekbar; 
    ImageView mIvRotateImage; 
    private float y=0; 
    int r =0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mIvRotateImage = (ImageView) findViewById(R.id.ivImgView); 
     mIvRotateImage.setOnTouchListener(this); 

} 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // TODO Auto-generated method stub 
     //double r=Math.atan2(event.getX()-mIvRotateImage.getWidth()/2, mIvRotateImage.getHeight()/2-event.getY()); 
     //double r=Math.atan2(event.getX(), event.getY()); 
     int rotation=(int)Math.toDegrees(r); 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       break; 
      case MotionEvent.ACTION_MOVE: 

       r = r + 2; 

       rotate(v, event); 
       break; 
      case MotionEvent.ACTION_UP: 
       break; 
     }//switch  

     return true; 
    } 

private void rotate(View v, MotionEvent event) { 
     LayoutParams mParams = (LayoutParams) mIvRotateImage.getLayoutParams(); 
     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
       R.drawable.increcircle); 
     int w = bitmap.getWidth(); 
     int h = bitmap.getHeight(); 
     Matrix matrix = new Matrix(); 
     matrix.preRotate(r); 
     Bitmap rotaBitmap = Bitmap.createBitmap(bitmap, 0, 0, 200, 200, matrix, 
       true); 
     BitmapDrawable bdr = new BitmapDrawable(rotaBitmap); 

     int x = mParams.leftMargin; 
     int y = mParams.topMargin; 
     mParams.leftMargin = 50; 
     mParams.topMargin = 50; 
     mIvRotateImage.setImageDrawable(bdr); 
     mIvRotateImage.setLayoutParams(mParams); 
    } 
} 

我的XML文件是

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

<ImageView android:id="@+id/ivImgView" 
    android:layout_width="200px" android:layout_height="200px" 
    android:layout_marginTop="50px" android:layout_marginLeft="50px" 
    android:src="@drawable/increcircle"/> 
</RelativeLayout> 
+0

這段代碼是旋轉圖像,並也越來越縮小。我只想要圖像旋轉但不縮小 – Rajesh 2012-04-23 09:15:03

回答

1
I used this code snippet. 

//android:scaleType="center" 
in <ImageView /> tag at xml file/ 
By using this Image is rotating but not scaling. 


<ImageView android:id="@+id/ivImgView" 
    android:layout_width="200px" android:layout_height="200px" 
    android:layout_marginTop="50px" android:layout_marginLeft="50px" 
    android:src="@drawable/increcircle" android:scaleType="center"/> 
相關問題