欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中imageView图片放大缩小及旋转功能示例代码

程序员文章站 2023-12-04 18:59:04
一、简介 二、方法 1)设置图片放大缩小效果 第一步:将标签中的android:scaletype设置为"fitcenter"...

一、简介

Android中imageView图片放大缩小及旋转功能示例代码

二、方法

1)设置图片放大缩小效果

第一步:将<imageview>标签中的android:scaletype设置为"fitcenter"

android:scaletype="fitcenter"

第二步:获取屏幕的宽度

displaymetrics dm=new displaymetrics();
getwindowmanager().getdefaultdisplay().getmetrics(dm);
dm.widthpixels

第三步:设置seekbar的最大progree值为屏幕宽度

sb_one.setmax(dm.widthpixels);

第四步:设置imageview的布局参数,也就是宽和高,也就是画布的宽高

int width=progress;
int height=progress*3/4;
iv_pic.setlayoutparams(new linearlayout.layoutparams(width, height));

2)设置图片旋转方法

第一步:给matrix设置角度,用于新的bitmap

private matrix matrix;
matrix.setrotate((int)(progress*3.60));

第二步:获取bitmap资源

bitmapdrawable bitmapdrawable=(bitmapdrawable)(getresources().getdrawable(r.drawable.image1));
bitmap bitmap=bitmapdrawable.getbitmap();

第三步:重建bitmap用于显示

bitmap newbitmap=bitmap.createbitmap(bitmap, 0, 0, bitmap.getwidth(), bitmap.getheight(),matrix,false);

第四步:给imageview设置新的bitmap

iv_pic.setimagebitmap(newbitmap);

三、代码实例

效果图:

Android中imageView图片放大缩小及旋转功能示例代码

设置大小和设置旋转的效果图

Android中imageView图片放大缩小及旋转功能示例代码Android中imageView图片放大缩小及旋转功能示例代码

代码:

fry.activity02

package fry;
import com.example.iamgeviewdemo1.r;
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.view.viewgroup.layoutparams;
import android.widget.imageview;
import android.widget.linearlayout;
import android.widget.seekbar;
import android.widget.seekbar.onseekbarchangelistener;
public class activity02 extends activity implements onseekbarchangelistener{
  private imageview iv_pic;
  private seekbar sb_one;
  private seekbar sb_two;
  private matrix matrix;
  @override
  protected void oncreate(bundle savedinstancestate) {
    // todo auto-generated method stub
    settitle("imageview实现图片缩放和旋转");
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity02);
    iv_pic=(imageview) findviewbyid(r.id.iv_pic);
    sb_one=(seekbar) findviewbyid(r.id.sb_one);
    sb_two=(seekbar) findviewbyid(r.id.sb_two);
    //设置seekbar的progress值改变监听事件
    sb_one.setonseekbarchangelistener(this);
    sb_two.setonseekbarchangelistener(this);
    matrix=new matrix();
//    1)设置图片放大缩小效果
//
//    第一步:将<imageview>标签中的android:scaletype设置为"fitcenter"
//
//    第二步:获取屏幕的宽度
//
//    第三步:设置seekbar的最大progree值为屏幕宽度
//
//    第四步:设置imageview的布局参数,也就是宽和高,也就是画布的宽高
    //设置图片放大缩小效果
    //第一步:获取屏幕的宽度
    displaymetrics dm=new displaymetrics();
    getwindowmanager().getdefaultdisplay().getmetrics(dm);
    //第二步:设置seekbar的最大progree值为屏幕宽度
    sb_one.setmax(dm.widthpixels);
  }
  @override
  public void onprogresschanged(seekbar seekbar, int progress,
      boolean fromuser) {
    // todo auto-generated method stub
    switch (seekbar.getid()) {
    case r.id.sb_one://放大或缩小
      int width=progress;
      int height=progress*3/4;
      //第三步:设置imageview的布局参数,也就是宽和高,也就是画布的宽高
      iv_pic.setlayoutparams(new linearlayout.layoutparams(width, height));
      break;
    case r.id.sb_two://旋转
      //设置旋转度数
      //设置图片旋转方法
      //第一步:给matrix设置角度,用于新的bitmap
      matrix.setrotate((int)(progress*3.60));
      //第二步:获取bitmap资源
      bitmapdrawable bitmapdrawable=(bitmapdrawable)(getresources().getdrawable(r.drawable.image1));
      bitmap bitmap=bitmapdrawable.getbitmap();
      //第三步:重建bitmap用于显示
      bitmap newbitmap=bitmap.createbitmap(bitmap, 0, 0, bitmap.getwidth(), bitmap.getheight(),matrix,false);
      //第四步:给imageview设置新的bitmap
      iv_pic.setimagebitmap(newbitmap);
      break;
    default:
      break;
    }
  }
  @override
  public void onstarttrackingtouch(seekbar seekbar) {
    // todo auto-generated method stub
  }
  @override
  public void onstoptrackingtouch(seekbar seekbar) {
    // todo auto-generated method stub
  }
}

activity02.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <imageview 
    android:id="@+id/iv_pic"
    android:layout_width="match_parent"
    android:layout_height="300dip"
    android:background="@android:color/black"
    android:scaletype="fitcenter"
    android:src="@drawable/image1"
    />
  <!-- 设置图片的显示方式:把图片按比例扩大/缩小到view的宽度,居中显示 -->
  <seekbar
    android:id="@+id/sb_one"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:progress="100"
    />
  <textview 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="拖动来缩放图片"
    />
  <seekbar 
    android:id="@+id/sb_two"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />
  <textview 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="拖动来旋转图片"
    />
</linearlayout>

四、收获

 1、设置图像居中显示

android:scaletype="fitcenter"

总结

以上所述是小编给大家介绍的android中imageview图片放大缩小及旋转功能示例代码,希望对大家有所帮助