Android 颜色渲染(十) ComposeShader组合渲染
来源:互联网 发布:课程设计c语言豆 编辑:程序博客网 时间:2024/05/21 14:09
转载自:http://blog.csdn.net/t12x3456/article/details/10366131
Android 颜色处理(十) ComposeShader组合渲染
public ComposeShader(Shader shaderA,Shader shaderB, Xfermode mode)
Parameters
public ComposeShader(Shader shaderA,Shader shaderB, PorterDuff.Mode mode)
Parameters
Xfermode及ProterBuff.Mode具体含义见上一篇:
Android 颜色渲染(八) PorterDuff及Xfermode详解
ComposeShader,和AnimationSet的用法相似.是可以将两种颜色渲染器的效果进行组合:
以上图像由BimtmapShader和LinearGradient两种效果组合绘制,其中位图渲染 平铺模式使用的为镜像模式, 组合渲染使用了ProterDuff叠加模式,具体见如下代码:
MainActivity:
- package com.tony.testshader;
- import android.os.Bundle;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.view.Menu;
- import android.widget.SeekBar;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- public class MainActivity extends Activity implements OnSeekBarChangeListener{
- private SweepGradientView sweepGradientView;
- private ComposeShaderView composeShaderView;
- private SeekBar seekbar;
- private PorterDuffView porterDuffView;
- private int currentId;
- private WaterRipplesView waterRipplesView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- composeShaderView = new ComposeShaderView(this);
- setContentView(composeShaderView);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- }
ComposeShaderView:
- package com.tony.testshader;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapShader;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.ComposeShader;
- import android.graphics.LinearGradient;
- import android.graphics.Paint;
- import android.graphics.PorterDuff;
- import android.graphics.Shader;
- import android.graphics.drawable.BitmapDrawable;
- import android.graphics.drawable.ShapeDrawable;
- import android.util.AttributeSet;
- import android.view.View;
- public class ComposeShaderView extends View {
- Bitmap mBitmap = null;
- int bitwidth = 0;
- int bitheight = 0;
- Paint mPaint = null;
- // bitmap渲染
- Shader mBitmapShader = null;
- // 线性渐变渲染
- Shader mLinearGradient = null;
- // 混合渲染
- Shader mComposeShader = null;
- ShapeDrawable mShapeDrawable = null;
- public ComposeShaderView(Context context) {
- super(context);
- // 装载资源
- mBitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.list_top))
- .getBitmap();
- // 得到宽高
- bitwidth = mBitmap.getWidth();
- bitheight = mBitmap.getHeight();
- // 创建BitmapShader对象
- mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.MIRROR,
- Shader.TileMode.MIRROR);
- // 创建LinearGradient并设置渐变颜色数组,平铺效果为镜像
- mLinearGradient = new LinearGradient(0, 0, 0, 100, new int[] {
- Color.WHITE, Color.LTGRAY, Color.TRANSPARENT, Color.GREEN }, null,
- Shader.TileMode.MIRROR);
- // 混合渲染 将两个效果叠加,使用PorterDuff叠加模式
- mComposeShader = new ComposeShader(mBitmapShader, mLinearGradient, PorterDuff.Mode.MULTIPLY);
- mPaint = new Paint();
- }
- public ComposeShaderView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- // 绘制混合渲染效果
- mPaint.setShader(mComposeShader);
- canvas.drawCircle(240, 360, 200, mPaint);
- }
- }
0 0
- Android 颜色渲染(十) ComposeShader组合渲染
- Android 颜色渲染(十) ComposeShader组合渲染
- Android 颜色渲染(十) ComposeShader组合渲染
- Android 颜色渲染(十) ComposeShader组合渲染
- ComposeShader组合渲染
- ComposeShader混合渲染
- Android中的自绘View的那些事儿(四)之 ComposeShader组合渲染器的简介
- Android 颜色渲染(三) Shader颜色渲染
- Android 颜色渲染(三) Shader颜色渲染
- Android 颜色渲染(三) Shader颜色渲染
- Android 颜色渲染Shader
- android 颜色渲染
- Android 颜色渲染(四) BitmapShader位图渲染
- Android 颜色渲染(六) RadialGradient 环形渲染
- Android 颜色渲染(五) LinearGradient线性渲染
- Android 颜色渲染(四) BitmapShader位图渲染
- Android 颜色渲染(五) LinearGradient线性渲染
- Android 颜色渲染(六) RadialGradient 环形渲染
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- The C++ Programming Language
- 破译邮件 Form SDJZU.acmclub.com
- 九度OJ 1442 A sequence of numbers
- java开发常用功能的实现
- Android 颜色渲染(十) ComposeShader组合渲染
- shell programming tutorial
- 微软推出C#必应代码搜索:编程变得太简单
- 别的非官方规划计划和计划
- CF 230 div2
- Android ViewPager使用详解
- [译]Android冰淇淋三明治ICS(4.0+)JNI局部引用的变化
- openstack 命令行管理九 - flavor管理[主机模板] (备忘)
- 关于判断IE的JS代码