Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 601|回复: 0

android 图像缩放[天幕杯]-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 14:50:43 | 显示全部楼层 |阅读模式
前面发过一篇如何利用Matrix来旋转图像,那么如何来缩放图像呢?其实旋转和缩放一样,不同的是需要使用Matrix 和 postScale 方法来设置图像缩放的倍数。下面的示例可以通过上下键来缩放和放大图像。 至于怎么旋转图像 大家请看这里吧http://www.apkbus.com/forum.php?mod=viewthread&tid=921&extra=这2个例子很像了 ,只是用的方法不同。 我还是把代码贴出来吧,当然我们需要先看运行效果。














  Activity01类

java代码

package com.yarin.android.Examples_05_09;



import android.app.Activity;

import android.os.Bundle;

import android.view.KeyEvent;



public class Activity01 extends Activity {

        private GameView mGameView = null;



        /** Called when the activity is first created. */

        @Override

        public void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);



                mGameView = new GameView(this);



                setContentView(mGameView);

        }



        public boolean onKeyUp(int keyCode, KeyEvent event) {

                super.onKeyUp(keyCode, event);

                return true;

        }



        public boolean onKeyDown(int keyCode, KeyEvent event) {

                if (mGameView == null) {

                        return false;

                }

                if (keyCode == KeyEvent.KEYCODE_BACK) {

                        this.finish();

                        return true;

                }

                return mGameView.onKeyDown(keyCode, event);

        }

}
复制代码  GameView

Java代码

package com.yarin.android.Examples_05_09;



import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Matrix;

import android.graphics.drawable.BitmapDrawable;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.view.View;



public class GameView extends View implements Runnable

{

        /* 声明Bitmap对象 */

        Bitmap        mBitQQ        = null;

        int                BitQQwidth        = 0;

        int                BitQQheight        = 0;



        float   Scale        = 1.0f;



        /* 构建Matrix对象 */

        Matrix mMatrix = new Matrix();

        

        public GameView(Context context)

        {

                super(context);

               

                /* 装载资源 */

                mBitQQ = ((BitmapDrawable) getResources().getDrawable(R.drawable.xh)).getBitmap();



                /* 得到图片的宽度和高度 */

                BitQQwidth = mBitQQ.getWidth();

                BitQQheight = mBitQQ.getHeight();

               

                /* 开启线程 */

                new Thread(this).start();

        }

        

        public void onDraw(Canvas canvas)

        {

                super.onDraw(canvas);

               

                /* 重置mMatrix */

                mMatrix.reset();

               

                /* 设置缩放 */

                mMatrix.postScale(Scale,Scale);

               

                /* 按mMatrix得旋转构建新的Bitmap */

                Bitmap mBitQQ2 = Bitmap.createBitmap(mBitQQ, 0, 0, BitQQwidth,BitQQheight, mMatrix, true);



                /* 绘制旋转之后的图片 */

                GameView.drawImage(canvas, mBitQQ2, (320-BitQQwidth)/2, 10);

               

                mBitQQ2 = null;

        }

        

        // 触笔事件

        public boolean onTouchEvent(MotionEvent event)

        {

                return true;

        }





        // 按键按下事件

        public boolean onKeyDown(int keyCode, KeyEvent event)

        {

                //上方向键

                if (keyCode == KeyEvent.KEYCODE_DPAD_UP)

                {

                        if ( Scale > 0.3 )

                        {

                                Scale-=0.1;

                        }

                }

                //下方向键

                else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN)

                {

                        if ( Scale < 1.5 )

                        {

                                Scale+=0.1;        

                        }               

                }

                return true;

        }





        // 按键弹起事件

        public boolean onKeyUp(int keyCode, KeyEvent event)

        {

                return false;

        }





        public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)

        {

                return true;

        }

        

        

        /**

         * 线程处理

         */

        public void run()

        {

                while (!Thread.currentThread().isInterrupted())

                {

                        try

                        {

                                Thread.sleep(100);

                        }

                        catch (InterruptedException e)

                        {

                                Thread.currentThread().interrupt();

                        }

                        //使用postInvalidate可以直接在线程中更新界面

                        postInvalidate();

                }

        }

        

        /**

         * 绘制一个Bitmap

         * @param canvas        画布

         * @param bitmap        图片

         * @param x                        屏幕上的x坐标

         * @param y                        屏幕上的y坐标

         */

        public static void drawImage(Canvas canvas, Bitmap bitmap, int x, int y)

        {

                /* 绘制图像 */

                canvas.drawBitmap(bitmap, x, y, null);

        }

}
复制代码
源码附件可以下载


Examples_05_09.rar (78.6 KB, 下载次数: 4)
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:50:46 | 显示全部楼层

Re:android

都没人留言 那么多好的东西
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:50:50 | 显示全部楼层

Re:android

这个没用哦,我有两点缩放的例子,你这个网上不下万个例子!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 12:02 , Processed in 0.316523 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表