Android中ImageView的旋转与缩放
生活随笔
收集整理的這篇文章主要介紹了
Android中ImageView的旋转与缩放
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明在代碼中已經注釋
XML代碼
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_pic"android:layout_width="match_parent"android:layout_height="200dip"android:background="@android:color/black"android:scaleType="fitCenter"android:src="@drawable/bg"/><!-- 設置圖片的顯示方式:把圖片按比例擴大/縮小到view的寬度,居中顯示 --><LinearLayoutandroid:layout_marginTop="310dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><SeekBarandroid:id="@+id/sb_one"android:layout_width="match_parent"android:layout_height="wrap_content"android:progress="100"/><TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="15dp"android:text="拖動來縮放圖片"android:textColor="@android:color/black"android:textSize="20dp"/><SeekBarandroid:id="@+id/sb_two"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="15dp"android:progress="50"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginTop="15dp"android:text="拖動來旋轉圖片"android:textColor="@android:color/black"android:textSize="20dp"/></LinearLayout> </RelativeLayout>Activity代碼
package com.zjs.imagerotate;import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.DisplayMetrics; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.SeekBar;public class MainActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener {private ImageView iv_pic;private SeekBar sb_one;private SeekBar sb_two;private Matrix matrix;@Overrideprotected void onCreate(Bundle savedInstanceState) {setTitle("imageView實現圖片縮放和旋轉");super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv_pic = (ImageView) findViewById(R.id.iv_pic);sb_one = (SeekBar) findViewById(R.id.sb_one);sb_two = (SeekBar) findViewById(R.id.sb_two);//設置SeekBar的progress值改變監聽事件sb_one.setOnSeekBarChangeListener(this);sb_two.setOnSeekBarChangeListener(this);matrix = new Matrix();// 1)設置圖片放大縮小效果 //// 第一步:將<ImageView>標簽中的android:scaleType設置為"fitCenter" //// 第二步:獲取屏幕的寬度 //// 第三步:設置seekBar的最大progree值為屏幕寬度 //// 第四步:設置imageview的布局參數,也就是寬和高,也就是畫布的寬高// 設置圖片放大縮小效果// 第一步:獲取屏幕的寬度DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);// 第二步:設置seekBar的最大progree值為屏幕寬度sb_one.setMax(dm.widthPixels);}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {// TODO Auto-generated method stubswitch (seekBar.getId()) {case R.id.sb_one:// 放大或縮小int width = progress;int height = progress * 3 / 4;// 第三步:設置imageview的布局參數,也就是寬和高,也就是畫布的寬高iv_pic.setLayoutParams(new RelativeLayout.LayoutParams(width, height));break;case R.id.sb_two:// 旋轉// 設置旋轉度數// 設置圖片旋轉方法// 第一步:給matrix設置角度,用于新的bitmapmatrix.setRotate((int) (progress * 3.60));// 第二步:獲取bitmap資源BitmapDrawable bitmapDrawable = (BitmapDrawable) (getResources().getDrawable(R.drawable.bg));Bitmap bitmap = bitmapDrawable.getBitmap();// 第三步:重建bitmap用于顯示Bitmap newBitmap = bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false);// 第四步:給imageview設置新的bitmapiv_pic.setImageBitmap(newBitmap);break;default:break;}}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto -generated method stub}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto -generated method stub} }效果圖
總結
以上是生活随笔為你收集整理的Android中ImageView的旋转与缩放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android如何实现NoActionB
- 下一篇: 三国电脑版单机游戏下载(三国单机版游戏大