广告
返回顶部
首页 > 资讯 > 移动开发 >Android 图片缩放与旋转的实现详解
  • 529
分享到

Android 图片缩放与旋转的实现详解

图片Android 2022-06-06 10:06:44 529人浏览 安东尼
摘要

本文使用Matrix实现Android实现图片缩放与旋转。示例代码如下: 代码如下:package com.android.matrix;import android.app.

本文使用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;

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实现屏幕旋转方法总结Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍Android开发 旋转屏幕导致Activity重建解决方法Android中利用matrix 控制图片的旋转、缩放、移动Android编程中调用Camera时预览画面有旋转问题的解决方法Android实现图片反转、翻转、旋转、放大和缩小Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转Android 3D旋转动画效果实现分解Android UI之ImageView实现图片旋转和缩放Flutter RotationTransition实现旋转动画


--结束END--

本文标题: Android 图片缩放与旋转的实现详解

本文链接: https://www.lsjlt.com/news/27439.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作