差了90度,怎麼辦呢?這裡就為您介紹怎麼把圖片轉向90度的方法
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imageView1" android:layout_width="300dp" android:layout_height="300dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:src="@drawable/ic_launcher" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="60dp" android:text="@string/right" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="60dp" android:text="@string/left" /> </RelativeLayout> </LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">DemoImageRotation</string> <string name="left">左旋90度</string> <string name="right">右旋90度</string> </resources>
DemoImageRotationActivity.java
package jim.demo.ImageRotation; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Matrix; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class DemoImageRotationActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //圖片左旋90 Button button_left = (Button)findViewById(R.id.button1); View.OnClickListener listener_left = new View.OnClickListener() { public void onClick(View view) { //取得圖片 ImageView imageView_left = (ImageView) findViewById(R.id.imageView1); //imageView_left.setDrawingCacheEnabled(true); //建立圖片的緩存,圖片的緩存本身就是一個Bitmap imageView_left.buildDrawingCache(); //取得緩存圖片的Bitmap檔 Bitmap bmp=imageView_left.getDrawingCache(); //定義一個矩陣圖 Matrix m=new Matrix(); //取得圖片的寬度 int width=bmp.getWidth(); //取得圖片的長度 int height=bmp.getHeight(); //逆時針旋轉90度 m.setRotate(-90); //產生新的旋轉後Bitmap檔 Bitmap b=Bitmap.createBitmap(bmp, 0, 0, width, height, m, true); //顯示圖片 imageView_left.setImageBitmap(b); } }; button_left.setOnClickListener(listener_left); //圖片右旋90 Button button_right = (Button)findViewById(R.id.button2); View.OnClickListener listener_right = new View.OnClickListener() { public void onClick(View view) { //取得圖片 ImageView imageView_right = (ImageView) findViewById(R.id.imageView1); //imageView_right.setDrawingCacheEnabled(true); //建立圖片的緩存,圖片的緩存本身就是一個Bitmap imageView_right.buildDrawingCache(); //取得緩存圖片的Bitmap檔 Bitmap bmp=imageView_right.getDrawingCache(); //定義一個矩陣圖 Matrix m=new Matrix(); //取得圖片的寬度 int width=bmp.getWidth(); //取得圖片的長度 int height=bmp.getHeight(); //順時針旋轉90度 m.postRotate(90); //產生新的旋轉後Bitmap檔 Bitmap b=Bitmap.createBitmap(bmp, 0, 0, width, height, m, true); //顯示圖片 imageView_right.setImageBitmap(b); } }; button_right.setOnClickListener(listener_right); } }
執行畫面
後記:
旋轉圖片對有用到取得手機內圖片及拍照功能的人應該還蠻需要的
但有一個缺點,就是旋轉必須長寬都一樣時用,如果長和寬是不一樣時,比如說是2:1
會出現一種現象,就是會愈轉愈小-.-",原因是當比較大的長轉到比較小的寬時會因為
放不進去,所以會自動縮小,然後你愈轉它就縮的愈多,所以就會出現愈轉愈小的現象
這是我後來再處理照片時發現的,好了!就為您介紹到這了,感謝。
圖片越轉越小這個小BUG目前有辦法解決嗎?
回覆刪除我把圖檔修成長、寬大小一樣,還是會越轉越小
因為我想利用圖片旋轉做一個類似羅盤的程式
請問2個java檔案可以合成一起用嗎?一個menu.java,一個rotation.java
回覆刪除