Android 图片缩放与旋转的实现详解
程序员文章站
2023-01-02 08:35:34
本文使用matrix实现android实现图片缩放与旋转。示例代码如下:复制代码 代码如下:package com.android.matrix;import androi...
本文使用matrix实现android实现图片缩放与旋转。示例代码如下:
package com.android.matrix;
import android.app.activity;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.graphics.matrix;
import android.graphics.drawable.bitmapdrawable;
import android.os.bundle;
import android.view.viewgroup.layoutparams;
import android.widget.imageview;
import android.widget.linearlayout;
import android.widget.imageview.scaletype;
/**
* android实现图片缩放与旋转。
* @author administrator
*
*/
public class matixactivity extends activity {
public void oncreate(bundle icicle) {
super.oncreate(icicle);
settitle("android实现图片缩放与旋转。");
linearlayout linlayout = new linearlayout(this);
//加载需要操作的图片,这里是一张图片
bitmap bitmaporg = bitmapfactory.decoderesource(getresources(),r.drawable.r);
//获取这个图片的宽和高
int width = bitmaporg.getwidth();
int height = bitmaporg.getheight();
//定义预转换成的图片的宽度和高度
int newwidth = 200;
int newheight = 200;
//计算缩放率,新尺寸除原始尺寸
float scalewidth = ((float) newwidth) / width;
float scaleheight = ((float) newheight) / height;
// 创建操作图片用的matrix对象
matrix matrix = new matrix();
// 缩放图片动作
matrix.postscale(scalewidth, scaleheight);
//旋转图片 动作
matrix.postrotate(45);
// 创建新的图片
bitmap resizedbitmap = bitmap.createbitmap(bitmaporg, 0, 0,
width, height, matrix, true);
//将上面创建的bitmap转换成drawable对象,使得其可以使用在imageview, imagebutton中
bitmapdrawable bmd = new bitmapdrawable(resizedbitmap);
//创建一个imageview
imageview imageview = new imageview(this);
// 设置imageview的图片为上面转换的图片
imageview.setimagedrawable(bmd);
//将图片居中显示
imageview.setscaletype(scaletype.center);
//将imageview添加到布局模板中
linlayout.addview(imageview,
new linearlayout.layoutparams(
layoutparams.fill_parent, layoutparams.fill_parent
)
);
// 设置为本activity的模板
setcontentview(linlayout);
}
}
上例是静态地实现图片缩放,下例中可以通过鼠标滑轮和方向键实现图片动态的放大与缩小。
程序结构如下图:
zoom.java文件中代码:
package com.android.zooming;
import android.view.view;
import android.content.context;
import android.graphics.canvas;
import android.graphics.drawable.drawable;
import android.view.keyevent;
public class zoom extends view {
private drawable image;
private int zoomcontroler=20;
public zoom(context context){
super(context);
image=context.getresources().getdrawable(r.drawable.x);
setfocusable(true);
}
@override
protected void ondraw(canvas canvas) {
// todo auto-generated method stub
super.ondraw(canvas);
//控制图像的宽度和高度
image.setbounds((getwidth()/2)-zoomcontroler, (getheight()/2)-zoomcontroler, (getwidth()/2)+zoomcontroler, (getheight()/2)+zoomcontroler);
image.draw(canvas);
}
@override
public boolean onkeydown(int keycode, keyevent event) {
if(keycode==keyevent.keycode_dpad_up)//放大
zoomcontroler+=10;
if(keycode==keyevent.keycode_dpad_down) //缩小
zoomcontroler-=10;
if(zoomcontroler<10)
zoomcontroler=10;
invalidate();
return true;
}
}
复制代码 代码如下:
package com.android.matrix;
import android.app.activity;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.graphics.matrix;
import android.graphics.drawable.bitmapdrawable;
import android.os.bundle;
import android.view.viewgroup.layoutparams;
import android.widget.imageview;
import android.widget.linearlayout;
import android.widget.imageview.scaletype;
/**
* android实现图片缩放与旋转。
* @author administrator
*
*/
public class matixactivity extends activity {
public void oncreate(bundle icicle) {
super.oncreate(icicle);
settitle("android实现图片缩放与旋转。");
linearlayout linlayout = new linearlayout(this);
//加载需要操作的图片,这里是一张图片
bitmap bitmaporg = bitmapfactory.decoderesource(getresources(),r.drawable.r);
//获取这个图片的宽和高
int width = bitmaporg.getwidth();
int height = bitmaporg.getheight();
//定义预转换成的图片的宽度和高度
int newwidth = 200;
int newheight = 200;
//计算缩放率,新尺寸除原始尺寸
float scalewidth = ((float) newwidth) / width;
float scaleheight = ((float) newheight) / height;
// 创建操作图片用的matrix对象
matrix matrix = new matrix();
// 缩放图片动作
matrix.postscale(scalewidth, scaleheight);
//旋转图片 动作
matrix.postrotate(45);
// 创建新的图片
bitmap resizedbitmap = bitmap.createbitmap(bitmaporg, 0, 0,
width, height, matrix, true);
//将上面创建的bitmap转换成drawable对象,使得其可以使用在imageview, imagebutton中
bitmapdrawable bmd = new bitmapdrawable(resizedbitmap);
//创建一个imageview
imageview imageview = new imageview(this);
// 设置imageview的图片为上面转换的图片
imageview.setimagedrawable(bmd);
//将图片居中显示
imageview.setscaletype(scaletype.center);
//将imageview添加到布局模板中
linlayout.addview(imageview,
new linearlayout.layoutparams(
layoutparams.fill_parent, layoutparams.fill_parent
)
);
// 设置为本activity的模板
setcontentview(linlayout);
}
}
上例是静态地实现图片缩放,下例中可以通过鼠标滑轮和方向键实现图片动态的放大与缩小。
程序结构如下图:
zoom.java文件中代码:
复制代码 代码如下:
package com.android.zooming;
import android.view.view;
import android.content.context;
import android.graphics.canvas;
import android.graphics.drawable.drawable;
import android.view.keyevent;
public class zoom extends view {
private drawable image;
private int zoomcontroler=20;
public zoom(context context){
super(context);
image=context.getresources().getdrawable(r.drawable.x);
setfocusable(true);
}
@override
protected void ondraw(canvas canvas) {
// todo auto-generated method stub
super.ondraw(canvas);
//控制图像的宽度和高度
image.setbounds((getwidth()/2)-zoomcontroler, (getheight()/2)-zoomcontroler, (getwidth()/2)+zoomcontroler, (getheight()/2)+zoomcontroler);
image.draw(canvas);
}
@override
public boolean onkeydown(int keycode, keyevent event) {
if(keycode==keyevent.keycode_dpad_up)//放大
zoomcontroler+=10;
if(keycode==keyevent.keycode_dpad_down) //缩小
zoomcontroler-=10;
if(zoomcontroler<10)
zoomcontroler=10;
invalidate();
return true;
}
}
上一篇: Android仿QQ空间底部菜单示例代码
下一篇: 按摩肓俞穴缓解治疗便秘、腹胀腹痛
推荐阅读
-
Android编程实现仿优酷圆盘旋转菜单效果的方法详解【附demo源码下载】
-
android 多点触摸图片缩放的具体实现方法
-
Android 图片缩放与旋转的实现详解
-
android zxing 解析二维码图片与生成二维码图片的代码实现
-
Android实现中轴旋转特效 Android制作别样的图片浏览器
-
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
-
Android UI之ImageView实现图片旋转和缩放
-
Android 自定义imageview实现图片缩放实例详解
-
Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控旋转,圆角矩形,圆形和仿刮刮卡效果
-
android中实现从相册中一次性获取多张图片与拍照,并将选中的图片显示出来