`
Aina_hk55HK
  • 浏览: 387900 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Android Shader渲染效果的使用

阅读更多
package com.Aina.Android;

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.RadialGradient;
import android.graphics.Shader;
import android.graphics.SweepGradient;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.view.View;

/**
 * com.Aina.Android Pro_Shader
 * 
 * @author Aina.huang E-mail: 674023920@qq.com
 * @version 创建时间:2010 Jun 17, 2010 9:59:49 AM 类说明
 */
public class GameView extends View {

	private Paint mPaint = null;
	private Shader mBitmapShader = null;
	private Shader mLinearGradient = null;
	private Shader mRadialGradient = null;
	private Shader mSweepGradient = null;
	private Shader mComposeShader = null;
	private Bitmap mBitmap = null;
	private int imgwidth = 0;
	private int imgheight = 0;
	private ShapeDrawable mShapeDrawable = null;

	public GameView(Context context) {
		super(context);
		mPaint = new Paint();
		mBitmap = ((BitmapDrawable) this.getResources().getDrawable(
				R.drawable.img)).getBitmap();// 获得资源
		imgwidth = mBitmap.getWidth();
		imgheight = mBitmap.getHeight();
		mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP,
				Shader.TileMode.MIRROR);
		mLinearGradient = new LinearGradient(0, 0, 100, 100, new int[] {
				Color.RED, Color.BLUE, Color.GREEN, Color.WHITE }, null,
				Shader.TileMode.MIRROR);
		mRadialGradient = new RadialGradient(100, 100, 50, new int[] {
				Color.BLUE, Color.GREEN, Color.RED, Color.WHITE }, null,
				Shader.TileMode.REPEAT);
		mSweepGradient = new SweepGradient(50, 50, new int[] { Color.RED,
				Color.GREEN, Color.BLUE, Color.WHITE }, null);
		mComposeShader = new ComposeShader(mBitmapShader, mLinearGradient,
				PorterDuff.Mode.DARKEN);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		mPaint.setAntiAlias(true);
		// mPaint.setShader(mBitmapShader);
		// canvas.drawBitmap(mBitmap, 10, 10, mPaint);

		// mShapeDrawable = new ShapeDrawable(new OvalShape());
		// Paint paint = mShapeDrawable.getPaint();
		// paint.setAntiAlias(true);
		// paint.setShader(mBitmapShader);
		// mShapeDrawable.setBounds(10, 10, imgwidth, imgheight);
		// mShapeDrawable.draw(canvas);

		// mPaint.setShader(mLinearGradient);
		// canvas.drawRect(0, 0, 100, 100, mPaint);

		// mPaint.setShader(mRadialGradient);
		// canvas.drawCircle(100, 100, 50, mPaint);

		// mPaint.setShader(mSweepGradient);
		// canvas.drawRect(0, 0, 100, 100, mPaint);
		mPaint.setShader(mComposeShader);
		canvas.drawRect(0, 0, imgwidth, imgheight, mPaint);
	}

}



package com.Aina.Android;

import android.app.Activity;
import android.os.Bundle;

public class Test_Shader extends Activity {
    /** Called when the activity is first created. */
	private GameView gv = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        gv = new GameView(this);
        setContentView(gv);
    }
}
分享到:
评论

相关推荐

    android Shader类简介_渲染图像示例

    在Android开发中,Shader类是实现复杂图形渲染和图像效果的关键工具。Shader是OpenGL ES(OpenGL for Embedded Systems)的一部分,它允许开发者自定义顶点和片段处理,从而创建出丰富的2D和3D图形。本篇文章将对...

    在Android端使用compute shader加速计算

    在Android平台上,使用Compute Shader可以显著提升计算密集型任务的执行效率,特别是在图形处理和物理模拟等场景。Compute Shader是OpenGL ES 3.0引入的一个重要特性,它允许开发者利用GPU进行并行计算,不再局限于...

    shader类渲染图形

    在Android平台上,Shader类是图形渲染的核心组成部分,它允许开发者自定义复杂的图像处理效果,比如颜色变换、渐变、纹理映射等。Shader类主要应用于OpenGL ES,它是Android系统底层图形处理的重要接口,使得我们...

    android shader线性渲染(类似与歌词逐字同步)

    在Android开发中,Shader是用于图形渲染的重要工具,它可以让我们自定义颜色、形状以及复杂的图像变换,从而实现各种酷炫的视觉效果。本教程将详细讲解如何利用Android Shader来实现一个类似于歌词逐字同步的线性...

    Paint的使用,Shader渲染器的使用

    Shader是Paint的一个重要组成部分,用于实现复杂的图形渲染效果,如线性渐变(LinearGradient)、径向渐变(RadialGradient)、位图着色(BitmapShader)和扫描渐变(SweepGradient)。 首先,我们来详细了解一下Paint类。...

    Shader渲染

    Shader渲染在Android应用开发中扮演着重要的角色,尤其是在自定义视图和图形处理方面。它允许开发者通过编程方式控制屏幕上的像素颜色,从而实现复杂的视觉效果。本篇将深入探讨BitmapShader、线性渐变以及梯度渐变...

    Android常见Shader着色器效果源码.zip

    在Android开发中,Shader是一种强大的工具,用于在图形渲染时应用自定义的着色效果。Shader着色器通常被用来实现复杂的视觉效果,如颜色变换、光影效果、纹理映射等,极大地提升了用户体验。本资源"Android常见...

    Android LinearGradient 线性渐变渲染

    【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR ) https://blog.csdn.net/shulianghan/article/details/125047457 博客配套源码 ...

    Android Shader应用开发之霓虹闪烁文字效果

    Android Shader应用开发之霓虹闪烁文字效果是指使用Android Shader技术来实现霓虹闪烁文字效果。Shader是一种图形处理技术,能够在Android应用程序中实现各种视觉效果。霓虹闪烁文字效果是指文字具有霓虹色的闪烁...

    Android 中的图形图像的渲染

    在Android系统中,图形图像的渲染是一个至关重要的领域,它涉及到UI设计、游戏开发、动画效果等多个方面。本文将深入探讨Android中的图形图像渲染技术,包括基础概念、渲染流程、Shader(着色器)的应用以及如何利用...

    android电子书翻页效果

    5. **3D翻页**: 对于更高级的效果,可以使用OpenGL ES进行3D渲染。通过创建3D模型,可以实现更逼真的纸张弯曲和翻转效果。同时,可以利用纹理映射技术来增加纸张的质感。 6. **性能优化**: 实现翻页效果可能会对...

    安卓Shader实战

    在Android开发中,Shader是一个非常重要的概念,它允许开发者自定义图形渲染效果,为应用程序提供丰富的视觉体验。Shader是OpenGL ES中的一个关键组件,通过它可以编写着色器语言(如GLSL),实现对像素和顶点的处理...

    android 控件 水波效果

    为了增加视觉吸引力,水波效果的颜色可以设计为渐变色,使用`Shader`对象(如`LinearGradient`或`RadialGradient`)可以实现这一功能。 10. **多线程处理**: 对于复杂的动画效果,可以考虑将计算过程放在后台...

    Android流星效果

    在Android平台上实现“流星效果”是一项有趣的挑战,它涉及到图形渲染、动画以及用户界面的交互。流星效果通常指的是天空中快速划过的星星轨迹,这种视觉特效可以为应用程序增添浪漫和梦幻的氛围。以下是对实现这一...

    shadertoy-android:适用于 Android 的非官方 Shadertoy 应用

    Shadertoy的核心是基于OpenGL的着色器语言GLSL,它允许开发者在GPU上编写代码,实现复杂的图像处理和实时渲染效果。在Android平台上,GLSL通常通过OpenGL ES(OpenGL for Embedded Systems)接口来使用,这是Android...

    shader使用

    总之,Shader的使用涉及OpenGL ES API、GLSL编程以及Android的图形渲染流程。熟练掌握Shader可以让你在Android平台上创建出更丰富、更动态的视觉效果。在 Lesson11-Graphics009-Shader 中,你将会看到具体示例,从...

    Android 图片滤镜渲染并保存到SD卡

    在Android中,我们可以使用GLSurfaceView配合OpenGL ES API来实现自定义的滤镜效果。Shader有几种类型,如Fragment Shader和Vertex Shader,其中Fragment Shader主要用于处理像素的颜色,而Vertex Shader处理顶点...

    android 自定义翻书效果

    实现这种效果的关键在于理解Android的图形渲染机制,并熟练掌握View的动画处理。下面将详细介绍如何在Android中实现类似真实翻页的交互体验。 一、基本原理 1. 图形渲染:Android系统基于SurfaceFlinger进行图形...

Global site tag (gtag.js) - Google Analytics