android前台渲染图片

android前台渲染,主要是重写view的ondraw方法,在canvas里操作

自定义MyView类

package com.ssln;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {

    private Bitmap bitmap;        //图片
    private Paint paint;        //画笔
    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initBitmap();
    }

    /**
     * 初始化信息
     */
    public void initBitmap()
    {
        //实例化画笔
         paint=new Paint();

         //从资源中加载
         bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img);
    }

    @SuppressLint("DrawAllocation")
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setAntiAlias(true);        //开启抗锯齿
        paint.setColor(Color.BLACK);    //设置画笔颜色
        paint.setTextScaleX(15);        //设置文字大小
        canvas.drawBitmap(bitmap, 10,10, paint); //在10x10的位置画图片
        canvas.save();                    //保存画布状态

        Matrix m1=new Matrix();            //矩阵
        m1.setTranslate(500, 10);        //平移 X500 Y10
        Matrix m2=new Matrix();
        m2.setRotate(15);                //旋转15°
        Matrix m3=new Matrix();
        m3.setConcat(m1, m2);            //合并矩阵
        m1.setScale(0.8f, 0.8f);        //设置缩放比例
        m2.setConcat(m3, m1);            //合并
        canvas.drawBitmap(bitmap, m2, paint);  //画图,经过了平移,旋转,缩放
        canvas.restore();                //恢复画布状态
        canvas.save();
        paint.setAlpha(180);            //设置透明度
        m1.setTranslate(200, 100);
        m2.setScale(1.3f, 1.3f);
        m3.setConcat(m1, m2);
        canvas.drawBitmap(bitmap, m3, paint);  //画图,经过了平移,缩放
        paint.reset();                  //重置画笔
        canvas.restore();
        paint.setTextSize(24);
        paint.setColor(Color.BLACK);
        canvas.drawText("图片宽度:"+bitmap.getWidth(), 20,240, paint); //写文字,图像的宽度
        canvas.drawText("图片高度:"+bitmap.getHeight(), 20,270, paint);
        paint.reset();

    }

}

修改activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.ssln.MainActivity" >

    <com.ssln.MyView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         />
</RelativeLayout>

运行效果如下

时间: 2024-12-25 23:15:48

android前台渲染图片的相关文章

android 浏览器对图片加载高度渲染问题

今天在开发有道汉语词典移动版的时候遇到了一个很奇怪的问题. 在android设备上访问的时候,总是发现有底部背景色不能完全渲染出来的情况(有时候又是正常的,一会儿出现一会儿不出现,iphone设备也是完全ok),就是一半是底色,还有一半没了... 仔细观察了一下发现在打开网页的时候先显示了头部的小图片和标题以及底部的按钮,再显示中间的大图,有个加载过程. ok,怀疑是图片还没加载完毕,导致高度计算出错,给底部设背景的时候加载完的那块就没颜色... 那么使用$(window).load()函数来解

android GLSurfaceView显示图片的问题!!!!

============问题描述============ GLSurfaceView的大小不是固定的,可能随着设备的尺寸变化,但是在GLSurfaceView显示的图像不能填满整个GLSurfaceView, 请教一下大家怎么设置? 黑色部分是没有填满的部分 ============解决方案1============ GLSurfaceView如果没有android:scaleType="fitXY"的话,估计就只能在渲染图片到GLSurfaceView的时候去设置了,去找找你渲染视频

Android 颜色渲染(九) PorterDuff及Xfermode详解

版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色渲染(九)  PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类, 在讲ComposeShader(组合渲染)之前,  由于构造ComposeShader需要 PorterDuffXfermode或者PorterDuff.Mode作为参数,所以在此先详细地了解下这两个类的作用,这对之后的绘图会有很大的帮 助: 在讲具体的使用之前补充一点知识,这就是 Proter

Android Shader渲染以及实现水波纹霓虹文字雷达等效果

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Android Shader渲染以及实现水波纹霓虹文字雷达等效果 - lzy的博客 - 博客频道 - CSDN.NET lzy的博客 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &a

Android 圆形/圆角图片的方法

Android 圆形/圆角图片的方法 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: view sourceprint? 1.public class 2.Xfermod

Android 前台服务

Android 前台服务 学习自 https://blog.csdn.net/guolin_blog/article/details/11952435#t3 前台服务漫谈 我们之前学习的Service都是运行与后台的,自然相对优先级会比较低一点,当内存不足的时候很容易被杀死.但是谁又希望自家的Service被杀死呢.那自然是想办法将自家的服务的优先级提高了,如果提高Service的优先级那当然是用---前台服务,也就是我们本章的主题. 常见的前台服务 各种音乐播放APP中的前台服务是最常见的了,

Android下将图片载入到内存中

Android的系统的标准默认每一个应用程序分配的内存是16M.所以来说是很宝贵的,在创建应用的时候要尽可能的去节省内存,可是在载入一些大的文件的时候,比方图片是相当耗内存的,一个1.3M的图片,分辨率是2560X1920(宽X高)图片当载入到手机内存的时候就会请求19M的一块内存,这是远远超出了系统自带的内存空间,这时候应用程序就会挂掉,所以我们要进行图片的缩放处理,以下我就来带大家创建一个用来图片缩放的应用: 应用效果图例如以下: 核心代码的实现: package com.examp.loa

iOS给图片添加滤镜&amp;使用openGLES动态渲染图片

给图片增加滤镜有这两种方式: CoreImage / openGLES 下面先说明如何使用CoreImage给图片添加滤镜, 主要为以下步骤: #1.导入CIImage格式的原始图片 #2.创建CIFilter滤镜 #3.用CIContext将滤镜中的图片渲染出来 #4.导出渲染后的图片 参考代码: 1 //导入CIImage 2 CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"hua"]]

Android Bitmap 开源图片框架分析(精华三)

主要介绍这三个框架,都挺有名的,其他的框架估计也差不多了 Android-Universal-Image-Loaderhttps://github.com/nostra13/Android-Universal-Image-Loader ImageLoaderhttps://github.com/novoda/ImageLoader Volley(综合框架,包含图片部分)https://github.com/mcxiaoke/android-volley 扯淡时间,可以跳过这段这些开源框架的源码还