Android 颜色渲染 BitmapShader位图渲染

Posted brave-sailor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 颜色渲染 BitmapShader位图渲染相关的知识,希望对你有一定的参考价值。

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.   
  3. import android.os.Bundle;  
  4. import android.app.Activity;  
  5.   
  6. public class MainActivity extends Activity {  
  7.   
  8.     private BitmapShaderView shaderView;  
  9.       
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.   
  14.         shaderView = new BitmapShaderView(this);  
  15.         setContentView(shaderView);  
  16.   
  17.     }  
  18.   
  19. }  


BitmapShaderView:

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

以上是关于Android 颜色渲染 BitmapShader位图渲染的主要内容,如果未能解决你的问题,请参考以下文章

Android学习笔记进阶16之BitmapShader

android 使用BitmapShader实现圆形以及放大镜效果

Android学习笔记进阶15之Shader渲染

Android BitmapShader 内存泄漏

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

android shader 用法