imageView實現圖片縮放和旋轉

xml代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#000000"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.imageview_shrinkandrotatepicture.MainActivity$PlaceholderFragment" >

    <ImageView 
        android:id="@+id/imageView"
        android:src="@drawable/pict"
        android:contentDescription="@string/hello_world"
        android:layout_width="150dp"
        android:scaleType="fitCenter"
        android:layout_height="150dp"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:textColor="#FFF6"
        android:layout_height="wrap_content" />

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:max="240"
        android:progress="120" />

    <TextView
        android:id="@+id/textView2"
        android:textColor="#FFF6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <SeekBar
        android:id="@+id/seekBar2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:max="360" />

</LinearLayout>

Java代碼

package com.example.imageview2;


import android.support.v7.app.ActionBarActivity;
import android.text.BoringLayout.Metrics;
import android.util.DisplayMetrics;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;


public class MainActivity extends ActionBarActivity implements OnSeekBarChangeListener{
private TextView tv1,tv2;
private SeekBar sk1,sk2;
private ImageView iv;
private int minWidth=80;
private Matrix matrix=new Matrix();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
tv1=(TextView) findViewById(R.id.textView1);
tv2=(TextView) findViewById(R.id.textView2);
sk1=(SeekBar) findViewById(R.id.seekBar1);
sk2=(SeekBar) findViewById(R.id.seekBar2);
iv=(ImageView) findViewById(R.id.imageView);

sk1.setOnSeekBarChangeListener(this);
sk2.setOnSeekBarChangeListener(this);
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
sk1.setMax(dm.widthPixels-minWidth);


}
@Override
public void onProgressChanged(SeekBar seekbar, int progress, boolean arg2) {
// TODO Auto-generated method stub
if (seekbar.getId()==R.id.seekBar1) {
int newWidth=progress+minWidth;
int newHeight=newWidth;
iv.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));
tv1.setText("圖像寬度:"+newWidth+"圖像高度:"+newHeight);
}else {
BitmapDrawable bitmapDrawable=(BitmapDrawable) getResources().getDrawable(R.drawable.pict);
Bitmap bitmap=bitmapDrawable.getBitmap();
matrix.setRotate(progress);
bitmap=bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix,true);
iv.setImageBitmap(bitmap);
tv2.setText(progress+"度");
}

}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub

}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub

}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章