1.
2. 实现代码
package com.example.myimageview3;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnSeekBarChangeListener {
private int minWidth = 80;
/* ImageView 图片 */
private ImageView imageView;
/* 显示图片的信息以及角度 */
private TextView textView1 , textView2;
/* 大小和角度拖动条 */
private SeekBar seekBar1 , seekBar2;
/* 角度变化的矩阵 */
private Matrix matrix = new Matrix ( );
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_main );
// 找到组件
imageView = ( ImageView ) this.findViewById ( R.id.imageview1 );
textView1 = ( TextView ) this.findViewById ( R.id.textview1 );
textView2 = ( TextView ) this.findViewById ( R.id.textview2 );
seekBar1 = ( SeekBar ) this.findViewById ( R.id.seekbar1 );
seekBar2 = ( SeekBar ) this.findViewById ( R.id.seekbar2 );
// 设置监听事件
seekBar1.setOnSeekBarChangeListener ( this );
seekBar2.setOnSeekBarChangeListener ( this );
// 获取当前手机显示的通用信息,并将当前窗口的一些信息放在DisplayMetrics 中
DisplayMetrics dm = new DisplayMetrics ( );
getWindowManager ( ).getDefaultDisplay ( )
.getMetrics ( dm );
// 设置seekBar1的最大值为获取屏幕的像素-80
seekBar1.setMax ( dm.widthPixels - minWidth );
}
/* Seekbar 监听事件 */
@ Override
public void onProgressChanged ( SeekBar seekBar , int progress ,
boolean fromUser ) {
// SeekBar1 处理事件
// TODO Auto-generated method stub
if (seekBar.getId ( ) == R.id.seekbar1) {
// 图片新的宽度
int newWidth = progress + minWidth;
// 图片新的高度为宽度的3/4
int newHeight = ( int ) ( newWidth * 3 / 4 );//按照原图片进行缩放的功能
// 设置图片的高度和宽度
imageView.setLayoutParams ( new LinearLayout.LayoutParams (
newWidth ,
newHeight ) );
// 设置TextView1显示的信息
textView1.setText ( "图像宽度"
+ newWidth
+ "图像高度"
+ newHeight );
}
// SeekBar2 处理事件
else if (seekBar.getId ( ) == R.id.seekbar2) {
Bitmap bitmap = ( ( BitmapDrawable ) ( getResources ( )
.getDrawable ( R.drawable.dog ) ) )
.getBitmap ( );
// 设置图片旋转的角度
matrix.setRotate ( progress );
bitmap = Bitmap.createBitmap (
bitmap ,
0 ,
0 ,
bitmap.getWidth ( ) ,
bitmap.getHeight ( ) ,
matrix ,
true );
imageView.setImageBitmap ( bitmap );
textView2.setText ( progress + "度" );
}
}
@ Override
public void onStartTrackingTouch ( SeekBar seekBar ) {
// TODO Auto-generated method stub
Toast.makeText ( MainActivity.this , "开始拖动" ,
Toast.LENGTH_SHORT )
.show ( );
}
@ Override
public void onStopTrackingTouch ( SeekBar seekBar ) {
// TODO Auto-generated method stub
Toast.makeText ( MainActivity.this , "停止拖动" ,
Toast.LENGTH_SHORT )
.show ( );
}
}