android ImagView缩放方法之一(Bitmap)
16lz
2022-06-18
- packagecom.myandroid.test;
- importandroid.app.Activity;
- importandroid.graphics.Bitmap;
- importandroid.graphics.BitmapFactory;
- importandroid.graphics.Matrix;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.ImageView;
- importandroid.widget.RelativeLayout;
- publicclassAlterImageSizeextendsActivity{
- privateImageViewimageView;
- privateButtonbt_bigger;
- privateButtonbt_smaller;
- privateRelativeLayoutlayout;//容器
- privateBitmapbmp;//bitmap图片对象
- privateintprimaryWidth;//原图片宽
- privateintprimaryHeight;//原图片高
- privatedoublescaleWidth,scaleHeight;//高宽比例
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //初始化
- getWidget();
- }
- /**
- *获取控件对象并初始化
- */
- privatevoidgetWidget(){
- imageView=(ImageView)findViewById(R.id.imageView);
- layout=(RelativeLayout)findViewById(R.id.relativeLayout);
- bt_bigger=(Button)findViewById(R.id.bt_bigger);
- bt_smaller=(Button)findViewById(R.id.bt_smaller);
- //创建BitMap对象,用于显示图片
- bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.butterfly);
- //原始大小
- primaryWidth=bmp.getWidth();
- primaryHeight=bmp.getHeight();
- //初始比例为1
- scaleWidth=scaleHeight=1;
- imageView.setImageBitmap(bmp);
- bt_bigger.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- scale(1.25,1.25);
- }
- });
- bt_smaller.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- scale(0.8,0.8);
- }
- });
- }
- /**
- *缩放
- */
- privatevoidscale(doublescale_width,doublescale_height){
- //这种方法,有点不好是:如果图片大小超出屏幕会报错。
- if((scale_width>1&&scaleWidth*primaryWidth>=getWindowManager().getDefaultDisplay().getWidth())
- ||(scale_width>1&&scale_height*primaryHeight>=getWindowManager().getDefaultDisplay().getHeight())){
- bt_bigger.setEnabled(false);
- }else{
- bt_bigger.setEnabled(true);
- }
- scaleWidth=scaleWidth*scale_width;//缩放到原来的*倍
- scaleHeight=scaleHeight*scale_height;
- Matrixmatrix=newMatrix();//矩阵,用于图片比例缩放
- matrix.postScale((float)scaleWidth,(float)scaleHeight);//设置高宽比例(三维矩阵)
- //缩放后的BitMap
- BitmapnewBmp=Bitmap.createBitmap(bmp,0,0,primaryWidth,primaryHeight,matrix,true);
- //重新设置BitMap
- imageView.setImageBitmap(newBmp);
- }
- }
xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <ScrollView android:id="@+id/scroll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" > <HorizontalScrollView android:id="@+id/hs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" > <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" /> </HorizontalScrollView> </ScrollView> <LinearLayout android:id="@+id/linearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:gravity="center" > <Button android:id="@+id/bt_smaller" android:layout_width="100px" android:layout_height="50px" android:text="缩小" > </Button> <Button android:id="@+id/bt_bigger" android:layout_width="100px" android:layout_height="50px" android:text="放大" > </Button> </LinearLayout></RelativeLayout>
更多相关文章
- Android之十三图片2D翻转
- android调用系统(相机)的图片,并且返回
- Android中多层Fragment嵌套,调用相册返回Uri无法显示图片的问题解
- Android(安卓)读取Assets中图片
- android自定义ProgressBar
- Android(安卓)File Explorer 展示图片
- 【OOM】Android加载大图片OOM异常解决
- android 照相以及关于自动生成的图片分辨率和面积太小问题
- Android(安卓)编程下背景图片适配工具类