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类是实现复杂图形渲染和图像效果的关键工具。Shader是OpenGL ES(OpenGL for Embedded Systems)的一部分,它允许开发者自定义顶点和片段处理,从而创建出丰富的2D和3D图形。本篇文章将对...
在Android平台上,使用Compute Shader可以显著提升计算密集型任务的执行效率,特别是在图形处理和物理模拟等场景。Compute Shader是OpenGL ES 3.0引入的一个重要特性,它允许开发者利用GPU进行并行计算,不再局限于...
在Android平台上,Shader类是图形渲染的核心组成部分,它允许开发者自定义复杂的图像处理效果,比如颜色变换、渐变、纹理映射等。Shader类主要应用于OpenGL ES,它是Android系统底层图形处理的重要接口,使得我们...
在Android开发中,Shader是用于图形渲染的重要工具,它可以让我们自定义颜色、形状以及复杂的图像变换,从而实现各种酷炫的视觉效果。本教程将详细讲解如何利用Android Shader来实现一个类似于歌词逐字同步的线性...
Shader是Paint的一个重要组成部分,用于实现复杂的图形渲染效果,如线性渐变(LinearGradient)、径向渐变(RadialGradient)、位图着色(BitmapShader)和扫描渐变(SweepGradient)。 首先,我们来详细了解一下Paint类。...
Shader渲染在Android应用开发中扮演着重要的角色,尤其是在自定义视图和图形处理方面。它允许开发者通过编程方式控制屏幕上的像素颜色,从而实现复杂的视觉效果。本篇将深入探讨BitmapShader、线性渐变以及梯度渐变...
在Android开发中,Shader是一种强大的工具,用于在图形渲染时应用自定义的着色效果。Shader着色器通常被用来实现复杂的视觉效果,如颜色变换、光影效果、纹理映射等,极大地提升了用户体验。本资源"Android常见...
【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR ) https://blog.csdn.net/shulianghan/article/details/125047457 博客配套源码 ...
Android Shader应用开发之霓虹闪烁文字效果是指使用Android Shader技术来实现霓虹闪烁文字效果。Shader是一种图形处理技术,能够在Android应用程序中实现各种视觉效果。霓虹闪烁文字效果是指文字具有霓虹色的闪烁...
在Android系统中,图形图像的渲染是一个至关重要的领域,它涉及到UI设计、游戏开发、动画效果等多个方面。本文将深入探讨Android中的图形图像渲染技术,包括基础概念、渲染流程、Shader(着色器)的应用以及如何利用...
5. **3D翻页**: 对于更高级的效果,可以使用OpenGL ES进行3D渲染。通过创建3D模型,可以实现更逼真的纸张弯曲和翻转效果。同时,可以利用纹理映射技术来增加纸张的质感。 6. **性能优化**: 实现翻页效果可能会对...
在Android开发中,Shader是一个非常重要的概念,它允许开发者自定义图形渲染效果,为应用程序提供丰富的视觉体验。Shader是OpenGL ES中的一个关键组件,通过它可以编写着色器语言(如GLSL),实现对像素和顶点的处理...
为了增加视觉吸引力,水波效果的颜色可以设计为渐变色,使用`Shader`对象(如`LinearGradient`或`RadialGradient`)可以实现这一功能。 10. **多线程处理**: 对于复杂的动画效果,可以考虑将计算过程放在后台...
在Android平台上实现“流星效果”是一项有趣的挑战,它涉及到图形渲染、动画以及用户界面的交互。流星效果通常指的是天空中快速划过的星星轨迹,这种视觉特效可以为应用程序增添浪漫和梦幻的氛围。以下是对实现这一...
Shadertoy的核心是基于OpenGL的着色器语言GLSL,它允许开发者在GPU上编写代码,实现复杂的图像处理和实时渲染效果。在Android平台上,GLSL通常通过OpenGL ES(OpenGL for Embedded Systems)接口来使用,这是Android...
总之,Shader的使用涉及OpenGL ES API、GLSL编程以及Android的图形渲染流程。熟练掌握Shader可以让你在Android平台上创建出更丰富、更动态的视觉效果。在 Lesson11-Graphics009-Shader 中,你将会看到具体示例,从...
在Android中,我们可以使用GLSurfaceView配合OpenGL ES API来实现自定义的滤镜效果。Shader有几种类型,如Fragment Shader和Vertex Shader,其中Fragment Shader主要用于处理像素的颜色,而Vertex Shader处理顶点...
实现这种效果的关键在于理解Android的图形渲染机制,并熟练掌握View的动画处理。下面将详细介绍如何在Android中实现类似真实翻页的交互体验。 一、基本原理 1. 图形渲染:Android系统基于SurfaceFlinger进行图形...