Android 颜色渲染(七) RadialGradient 环形渲染实现水波纹效果
来源:互联网 发布:捏人设的软件 网站 编辑:程序博客网 时间:2024/05/10 03:50
利用环形渲染我们可以做到什么? 其实很多都是非常常见的,比如上一篇实现的帮帮糖效果, 彩色的热气球,比如这里要讲到的水波纹效果,或者也可以理解为扩散色渲染效果
首先看一下效果图:
轻触屏幕,即可看到对应的效果,可以看到,实现这种效果,利用RadialGradient ,只需简单几行代码:
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 WaterRipplesView waterRipplesView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); waterRipplesView = new WaterRipplesView(this); setContentView(waterRipplesView); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
WaterRipplesView:
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.Paint;import android.graphics.RadialGradient;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.ShapeDrawable;import android.graphics.drawable.shapes.OvalShape;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.MotionEvent;import android.view.View;/** * 水波纹效果 * @author tony * */ public class WaterRipplesView extends View {Shader mBitmapShader = null;Bitmap mBitmapPn = null;Paint mPaint = null;Shader mRadialGradient = null;Canvas mCanvas = null;ShapeDrawable mShapeDrawable = null;public WaterRipplesView(Context context) {super(context);// 初始化工作Bitmap bitmapTemp = ((BitmapDrawable) getResources().getDrawable(R.drawable.leaf)).getBitmap();DisplayMetrics dm = getResources().getDisplayMetrics();// 创建与当前使用的设备窗口大小一致的图片mBitmapPn = Bitmap.createScaledBitmap(bitmapTemp, dm.widthPixels,dm.heightPixels, true);// 创建BitmapShader objectmBitmapShader = new BitmapShader(mBitmapPn, Shader.TileMode.REPEAT,Shader.TileMode.MIRROR);mPaint = new Paint();}public WaterRipplesView(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);// 将图片裁剪为椭圆型// 创建ShapeDrawable object,并定义形状为椭圆mShapeDrawable = new ShapeDrawable(new OvalShape());// OvalShape:椭圆// 设置要绘制的椭圆形的东西为ShapeDrawable图片mShapeDrawable.getPaint().setShader(mBitmapShader);// 设置显示区域mShapeDrawable.setBounds(0, 0, mBitmapPn.getWidth(),mBitmapPn.getHeight());// 绘制ShapeDrawablemShapeDrawable.draw(canvas);if (mRadialGradient != null) {mPaint.setShader(mRadialGradient);canvas.drawCircle(0, 0, 1000, mPaint);}}// @覆写触摸屏事件public boolean onTouchEvent(MotionEvent event) {// @设置alpha通道(透明度)mPaint.setAlpha(400);mRadialGradient = new RadialGradient(event.getX(), event.getY(), 48,new int[] { Color.WHITE, Color.TRANSPARENT },null, Shader.TileMode.REPEAT);// @重绘postInvalidate();return true;}}
- Android 颜色渲染(七) RadialGradient 环形渲染实现水波纹效果
- Android 颜色渲染(七) RadialGradient 环形渲染实现水波纹效果
- Android 颜色渲染(七) RadialGradient 环形渲染实现水波纹效果
- Android 颜色渲染(七) RadialGradient 环形渲染实现水波纹效果
- Android 颜色渲染(六) RadialGradient 环形渲染
- Android 颜色渲染(六) RadialGradient 环形渲染
- Android 颜色渲染(六) RadialGradient 环形渲染
- RadialGradient环形渲染
- RadialGradient环形渲染
- RadialGradient环形渲染
- RadialGradient环形渲染
- Android开发 之 RadialGradient环形渲染
- Android Shader渲染以及实现水波纹霓虹文字雷达等效果
- Android TileMode效果 水波纹效果 环形渐变
- Android 颜色渲染(三) Shader颜色渲染
- Android 颜色渲染(三) Shader颜色渲染
- Android 颜色渲染(三) Shader颜色渲染
- android实现水波纹效果
- Oracle CASE WHEN 用法介绍
- PL/SQL存储过程编程
- Oracle常用函数
- Http协议简单入门
- 股评 2013-08-29
- Android 颜色渲染(七) RadialGradient 环形渲染实现水波纹效果
- 《计算机网络》 读书笔记(五) 其他杂项
- CSS selector:”div.title p” 它代表什么意思?
- (step6.3.4)hdu 1151(Air Raid——最小路径覆盖)
- cocos2d-x vs平台下新建项目的若干建议
- 数据仓库建模--星型模型
- 二分图匹配
- Jsoup解析HTML+Debug使用
- 步步为营Hibernate全攻略(一)构建Hibernate框架环境