`
kerlubasola
  • 浏览: 679817 次
文章分类
社区版块
存档分类
最新评论

android 关于图片的放大,缩小,旋转功能的实现(附源码)

 
阅读更多
package funo.com.test;

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;
import android.widget.LinearLayout;

public class ChangePicture extends Activity {

private ImageView mImageView;
private Button btn1,btn2,btn3;
private LinearLayout layout1;
private Bitmap bmp;
private int id=0;
private int displayWidth,displayHeight;
private float scaleWidth=1,scaleHeight=1;
private int degree = 30;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picture);
//取得屏幕分辨率
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
displayWidth=dm.widthPixels;
displayHeight=dm.heightPixels-80;

System.out.println(displayWidth +","+displayHeight);

bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.pic);
layout1=(LinearLayout)findViewById(R.id.layout1);
mImageView=(ImageView)findViewById(R.id.myImageView);
btn1=(Button)findViewById(R.id.myButton1);
btn1.setOnClickListener(new OnClickListener(){
public void onClick(View v){
small();
}
});
btn2=(Button)findViewById(R.id.myButton2);
btn2.setOnClickListener(new OnClickListener(){
public void onClick(View v){
big();
}
});
btn3 = (Button)findViewById(R.id.myButton3);
btn3.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
circle();

}
});
}
private void small(){
//获得Bitmap的高和宽
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
//设置缩小比例
double scale=0.8;
//计算出这次要缩小的比例
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
if(id==0){
layout1.removeView(mImageView);
}
else{
layout1.removeView((ImageView)findViewById(id));

}
id++;
ImageView imageView=new ImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);
btn2.setEnabled(true);
}
private void big(){
//获得Bitmap的高和宽
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();
//设置缩小比例
double scale=1.25;
//计算出这次要缩小的比例
scaleWidth=(float)(scaleWidth*scale);
scaleHeight=(float)(scaleHeight*scale);
//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
if(id==0){
layout1.removeView(mImageView);
}
else{
layout1.removeView((ImageView)findViewById(id));

}
id++;
ImageView imageView=new ImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);
if(scaleWidth*scale*bmpWidth>displayWidth||scaleHeight*scale*scaleHeight>displayHeight){
btn2.setEnabled(false);
}
}
//旋转
private void circle() {
//位图的旋转
//获得Bitmap的高和宽
int bmpWidth=bmp.getWidth();
int bmpHeight=bmp.getHeight();

//产生resize后的Bitmap对象
Matrix matrix=new Matrix();
matrix.postRotate(degree);
degree += 30;
Bitmap resizeBmp=Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight, matrix, true);
// int id = 0;
if(id==0){
layout1.removeView(mImageView);
}
else{
layout1.removeView((ImageView)findViewById(id));

}

id++;
ImageView imageView=new ImageView(this);
imageView.setId(id);
imageView.setImageBitmap(resizeBmp);
layout1.addView(imageView);
setContentView(layout1);

}

}




//xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"

>
<Button
android:id="@+id/myButton1"
android:layout_width="90px"
android:layout_height="60px"
android:text="缩小"
android:textSize="18sp"
>
</Button>
<Button
android:id="@+id/myButton2"
android:layout_width="90px"
android:layout_height="60px"
android:text="放大"
android:textSize="18sp"
>
</Button>
<Button
android:id="@+id/myButton3"
android:layout_width="90px"
android:layout_height="60px"
android:text="旋转"
android:textSize="18sp"



/>



</LinearLayout>
<ImageView
android:id="@+id/myImageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/pic"
android:layout_x="0px"
android:layout_y="0px"
>
</ImageView>


</LinearLayout>


分享到:
评论

相关推荐

    android应用源码图片放大缩小旋转涂鸦源码.zip

    android应用源码图片放大缩小旋转涂鸦源码.zip

    安卓Android源码——图片放大缩小旋转涂鸦源码.zip

    安卓Android源码——图片放大缩小旋转涂鸦源码.zip

    android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载

    android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载android应用源码图片放大缩小旋转涂鸦源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...

    android应用源码图片放大缩小旋转涂鸦源码-IT计算机-毕业设计.zip

    Android应用源码开发Demo,主要用于毕业设计学习。

    应用源码图片放大缩小旋转涂鸦源码.zip

    android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台

    android RDP远程桌面客户端源码

    1)支持Android 2.2(含)以上系统 2)支持RDP协议 3)支持Windows2008 RemoteApp,实现应用交付功能 4)支持远程桌面自定义分辨率,并能自适应手机屏幕全屏显示 5)支持放大、缩小等基本手势操作 6)支持屏幕旋转 7...

    Android项目源码非常漂亮的图库相册图片自动分类.zip

    Android项目源码非常漂亮的图库相册图片自动分类是一款图片浏览器源码,应该说这个Gallery太强大了,功能很多查看图片、放大缩小、旋转、幻灯播放,分享、等等。本项目UI设计的也很炫,项目中使用了3D Gallery效果,...

    Android应用源码安卓动漫图片阅读器项目.zip

    Android应用源码安卓动漫图片阅读器项目是一套某培训机构的一个培训项目,是基于安卓的动漫阅读器项目,虽然说是一个动漫阅读器,但是实际功能上类似于一个图片浏览器,打开项目点击请选择以后会自动弹出SD卡根目录...

    Android绘图板源代码

    4.贴图144张,可以放大、缩小、平移、旋转,可以锁定、Bring to front、水平翻转、绘制到画布和删除 5.拍照和从手机存储里选择两种方式添加背景图片和贴图 6.文字添加功能还没做出来,undo和redo只能两步 相册管理 ...

    Android项目源码非常漂亮的图库相册图片自动分类

    本项目是一款图片浏览器源码,应该说这个Gallery太强大了,功能很多查看图片、放大缩小、旋转、幻灯播放,分享、等等。本项目UI设计的也很炫,项目中使用了3D Gallery效果,可以好好学习下。代码层次分明,大部分...

    android RDP远程桌面客户端源码(2015最新更新代码,高清桌面快速稳定)

    高清显示,可显示远程桌面壁纸背景,手机端显示界面美观 5)支持放大、缩小等基本手势操作 6)支持屏幕旋转 7)支持虚拟键盘,支持Windows键和Ctrl+Alt+Del功能键以及其他键,支持虚拟鼠标右键 8)可保存多条远程...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID 4.26 离开与关闭程序的弹出窗口——对话窗口上的...

    网络相册的分类

    本项目是一款图片浏览器源码,应该说这个Gallery太强大了,功能很多查看图片、放大缩小、旋转、幻灯播放,分享、等等。本项目UI设计的也很炫,项目中使用了3D Gallery效果,可以好好学习下。代码层次分明,大部分...

    Android应用源码安卓动漫图片阅读器项目

    Android应用源码安卓动漫图片阅读器项目是一套某培训机构的一个培训项目,是基于安卓的动漫阅读器项目,虽然说是一个动漫阅读器,但是实际功能上类似于一个图片浏览器,打开项目点击请选择以后会自动弹出SD卡根目录...

    JAVA上百实例源码以及开源项目源代码

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    gallery album_android_

    非常漂亮的图库相册图片自动分类源码,功能很多查看图片、放大缩小、旋转、幻灯播放,分享、等等。

Global site tag (gtag.js) - Google Analytics