动态放大缩小ImageView里的图片(运用Matrix对象来缩放图片文件)
新建一个继承Activity类的ImageViewMatrixActivity,并设置布局文件为:imageviewmatrix.xml。
首先在布局文件中添加2个按钮Big和Small、ImageView。
|
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" >
<Button android:id="@+id/imageviewmatrix_btn01" style="@android:style/Widget.Button.Inset" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/big" />
<Button android:id="@+id/imageviewmatrix_btn02" style="@android:style/Widget.Button.Inset" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/small" /> </LinearLayout>
<ImageView android:id="@+id/imageviewmatrix_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image1" />
|
而后在Activity代码中修改。
|
package lyx.feng.second;
import lyx.feng.simpletextdemo.R; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView;
public class ImageViewMatrixActivity extends Activity implements OnClickListener { private Button big = null; private Button small = null; private ImageView image = null; private Bitmap bitmap = null; private DisplayMetrics dm = null; private int heightScreen = 0; private int widthScreen = 0; private double size = 1.0f;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.imageviewmatrix); this.big = (Button) super.findViewById(R.id.imageviewmatrix_btn01); this.small = (Button) super.findViewById(R.id.imageviewmatrix_btn02); this.image = (ImageView) super.findViewById(R.id.imageviewmatrix_image);
// 获取屏幕的宽和高 this.dm = new DisplayMetrics(); super.getWindowManager().getDefaultDisplay().getMetrics(this.dm); this.heightScreen = dm.heightPixels; this.widthScreen = dm.widthPixels; this.bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image1);
// 注册单击按钮 this.big.setOnClickListener(this); this.small.setOnClickListener(this); }
@Override public void onClick(View v) { switch (v.getId()) { case R.id.imageviewmatrix_btn01: // 放大操作 big(); break; case R.id.imageviewmatrix_btn02: // 缩小操作 small(); break; } }
private void small() { // 缩小操作 int bitmapHeight = bitmap.getHeight(); int bitmapWidth = bitmap.getWidth(); size -= 0.1f; // 取得缩小后的图片大小 bitmapHeight = (int) (bitmapHeight * size); bitmapWidth = (int) (bitmapWidth * size); Matrix matrix = new Matrix(); matrix.postScale((float) size, (float) size); // 得到缩小后的图片 Bitmap temp = Bitmap.createBitmap(bitmap, 0, 0, bitmapWidth, bitmapHeight, matrix, true); this.image.setImageBitmap(temp); // 回收Bitmap temp = null; // 如果缩小比率为0.1则按钮不可点击 if (size <= 0.1) { this.small.setEnabled(false); } // 放大按钮可以点击 this.big.setEnabled(true); }
private void big() { // 放大操作 int bitmapHeight = bitmap.getHeight(); int bitmapWidth = bitmap.getWidth(); size += 0.1f; // 取得缩小后的图片大小 bitmapHeight = (int) (bitmapHeight * size); bitmapWidth = (int) (bitmapWidth * size); Matrix matrix = new Matrix(); matrix.postScale((float) size, (float) size); // 得到缩小后的图片 Bitmap temp = Bitmap.createBitmap(bitmap, 0, 0, bitmapWidth, bitmapHeight, matrix, true); this.image.setImageBitmap(temp); // 回收Bitmap temp = null; // 如果缩小比率为屏幕的2倍则按钮不可点击 if (size >= this.heightScreen * 2 || size >= this.widthScreen * 2) { this.big.setEnabled(true); } // 缩小按钮可以点击 this.small.setEnabled(false); }
}
|
使用Matrix动态缩放ImageView中的图片
这篇博客介绍如何在Android应用中通过Matrix对象实现ImageView里图片的动态放大和缩小功能。作者创建了一个名为ImageViewMatrixActivity的Activity,使用XML布局文件imageviewmatrix.xml设置界面,包含两个按钮(Big和Small)以及一个ImageView。通过监听按钮事件,调整Matrix来改变图片的大小。
2万+

被折叠的 条评论
为什么被折叠?



