版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 颜色处理(四) BitmapShader位图渲染

public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY)

调用这个方法来产生一个画有一个位图的渲染器(Shader)。

bitmap   在渲染器内使用的位图

tileX      The tiling mode for x to draw the bitmap in.   在位图上X方向渲染器平铺模式

tileY     The tiling mode for y to draw the bitmap in.    在位图上Y方向渲染器平铺模式

TileMode:

CLAMP  :如果渲染器超出原始边界范围,会复制范围内边缘染色。

REPEAT :横向和纵向的重复渲染器图片,平铺。

MIRROR :横向和纵向的重复渲染器图片,这个和REPEAT重复方式不一样,他是以镜像方式平铺。

首先看一下效果图:

还是直接上代码:

MainActivity:

  1. package com.tony.shader;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. public class MainActivity extends Activity {
  5. private BitmapShaderView shaderView;
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. shaderView = new BitmapShaderView(this);
  10. setContentView(shaderView);
  11. }
  12. }

BitmapShaderView:

    1. package com.tony.shader;
    2. import android.content.Context;
    3. import android.graphics.Bitmap;
    4. import android.graphics.BitmapShader;
    5. import android.graphics.Canvas;
    6. import android.graphics.Paint;
    7. import android.graphics.Shader;
    8. import android.graphics.drawable.BitmapDrawable;
    9. import android.graphics.drawable.ShapeDrawable;
    10. import android.graphics.drawable.shapes.OvalShape;
    11. import android.util.AttributeSet;
    12. import android.view.View;
    13. public class BitmapShaderView extends View {
    14. private BitmapShader bitmapShader = null;
    15. private Bitmap bitmap = null;
    16. private Paint paint = null;
    17. private ShapeDrawable shapeDrawable = null;
    18. private int BitmapWidth = 0;
    19. private int BitmapHeight = 0;
    20. public BitmapShaderView(Context context) {
    21. super(context);
    22. // 得到图像
    23. bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.cat))
    24. .getBitmap();
    25. BitmapWidth = bitmap.getWidth();
    26. BitmapHeight = bitmap.getHeight();
    27. // 构造渲染器BitmapShader
    28. bitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR,Shader.TileMode.REPEAT);
    29. }
    30. public BitmapShaderView(Context context,AttributeSet set) {
    31. super(context, set);
    32. }
    33. @Override
    34. protected void onDraw(Canvas canvas) {
    35. // TODO Auto-generated method stub
    36. super.onDraw(canvas);
    37. //将图片裁剪为椭圆形
    38. //构建ShapeDrawable对象并定义形状为椭圆
    39. shapeDrawable = new ShapeDrawable(new OvalShape());
    40. //得到画笔并设置渲染器
    41. shapeDrawable.getPaint().setShader(bitmapShader);
    42. //设置显示区域
    43. shapeDrawable.setBounds(20, 20,BitmapWidth-140,BitmapHeight);
    44. //绘制shapeDrawable
    45. shapeDrawable.draw(canvas);
    46. }
    47. }

Android 颜色渲染(四) BitmapShader位图渲染的更多相关文章

  1. Android下基于SDL的位图渲染(二)理论篇

    理论篇 上一篇中介绍了如何将SDL2源码应用到Android渲染中,实际上SDL本身提供的android-project实现了基于android的c运行时环境,通过上面实践篇的介绍,就是完成这个环境搭 ...

  2. Android下基于SDL的位图渲染(一)

    环境准备 安装Android开发环境(java.android-sdk.android ndk.gcc). 我使用的ndk版本是r10b/r10d,在win10/ubutu 15.04编译 下载sdl ...

  3. Android 颜色渲染(十) ComposeShader组合渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Android 颜色处理(十) ComposeShader组合渲染 public ComposeShader(Shader sh ...

  4. Android 颜色渲染(六) RadialGradient 环形渲染

    Android 颜色处理(六) RadialGradient 环形渲染 public RadialGradient(float x, float y, float radius, int[] colo ...

  5. Android 颜色渲染(五) LinearGradient线性渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色处理(五) LinearGradient线性渲染 相信很多人都看过歌词同步的效果, 一是竖直方向的滚动,另一方面是水平方面的歌 ...

  6. Android下基于PCM的音频渲染

    环境准备 请按照我之前的文章-Android下基于SDL的位图渲染,安装必要的开发环境. 实践篇 这里主要参考Beginning SDL 2.0(6) 音频渲染及wav播放,只不过将源从WAV文件改成 ...

  7. Android下基于SDL的YUV渲染

    实战篇 本文主要参考我之前整理的文章windows下使用SDL进行YUV渲染. 相对于之前写的位图渲染部分(http://www.cnblogs.com/tocy/p/android-sdl-bitm ...

  8. android 开发 View _13 绘制图片与BitmapShader位图的图像渲染器

    BitmapShader位图的图像渲染器 TileMode 模式 Shader.TileMode.CLAMP 边缘拉伸. Shader.TileMode.MIRROR 在水平方向和垂直方向交替景象, ...

  9. Android 颜色渲染(三) Shader颜色渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 相信看过在上一篇中提到的三篇文章后,大家已经对颜色处理方面有更深的体会. 之前讲到颜色渐变的效果, 具体怎么做呢,这就需要应用颜色渲染. 首先要介 ...

随机推荐

  1. favicon.ico的使用方法

    favicon.ico怎么来,就自己决定了. 虽说是放在网站根目录下就行了, 但最好是放在网站images目录下,方便统一管理. 然后在head.tpl.php 中的<head></ ...

  2. #Leet Code# Same Tree

    语言:Python 描述:使用递归实现 # Definition for a binary tree node # class TreeNode: # def __init__(self, x): # ...

  3. css3 3D盒子效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 各大Oj平台介绍[转]

    1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有P ...

  5. scala 安装

    http://www.scala-lang.org/download/install.html http://zh.scala-tour.com/#/hello-wolrd scala指南 To ru ...

  6. UI设计网站参考

    1. https://dribbble.com/colors/6A969A 2. 设计师网站导航:http://hao.uisdc.com/ 3. bootstrap的UI:http://www.bo ...

  7. Servo: The Embeddable Browser Engine

    Embedding, in the context of this article, is the process of hosting a web rendering engine inside a ...

  8. 【Tools】Apache Maven 入门篇 ( 上 )

    作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 mave ...

  9. 客户端(C#)调用CXF搭建的webservice的出现一些问题记录

    最近把XFire框架搭建的一个webservice换成CXF框架.访问webservice的客户端是C#写的.客户端调用webservice,数据能在客户端得到.看起来显然是成功了. 但其中在VS中添 ...

  10. MFC 仿QQ聊天软件(黄花寒)

    http://blog.csdn.net/lh844386434/article/details/6655080 http://download.csdn.net/download/lh8443864 ...