700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 图片手动放大 Android图片的手动放大缩小

android 图片手动放大 Android图片的手动放大缩小

时间:2020-09-02 00:30:15

相关推荐

android 图片手动放大 Android图片的手动放大缩小

利用缩放因子进行图片的放大缩小,效果图如下

在实现过程中如出现直接崩溃的情况:在全局配置文件中加入android:largeHeap="true"即可解决问题,在文章最后有现成代码

步骤:

1.布局文件 android:scaleType="matrix"记得加上,不然没有效果

2.控件实例化及处理机制的取代

3.进行逻辑处理,并利用Matrix进行图片处理其中nowScale 及beforeScale为自定义的float类型的全局变量!,具体见最后代码**

代码如下:

布局文件

android:id="@+id/imgzoom"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:scaleType="matrix"

android:src="@drawable/myphoto" />

Java文件

public class MainActivity extends Activity {

private ImageView mImgzoom;

private float beforeScale=1.0f;//之前的伸缩值

private float nowScale;//当前的伸缩值

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

myScale();

}

private void initView() {

mImgzoom = (ImageView) findViewById(R.id.imgzoom);

}

private void myScale(){

final ScaleGestureDetector scaleGestureDetector=new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {

@Override

public boolean onScale(ScaleGestureDetector detector) {

nowScale=detector.getScaleFactor()*beforeScale;

//设置缩放的范围

if (nowScale>3||nowScale<0.1){

beforeScale=nowScale;

return true;

}

Log.i("Scale","nowScale="+nowScale);

Matrix matrix=new Matrix();

matrix.setScale(nowScale,nowScale);

Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.myphoto);//获取图片

bitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);//转化成bitmap格式

mImgzoom.setImageBitmap(bitmap);

beforeScale=nowScale;//保存上一次的缩放值!

return false;

}

@Override

public boolean onScaleBegin(ScaleGestureDetector detector) {

return true;//记得改成ture;

}

@Override

public void onScaleEnd(ScaleGestureDetector detector) {

}

});

mImgzoom.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

scaleGestureDetector.onTouchEvent(event);

return true;

}

});

}

}

本文同步分享在 博客“计蒙不吃鱼”(CSDN)。

如有侵权,请联系 support@ 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。