Android Shader填充图形
来源:互联网 发布:SEO优化 编辑:程序博客网 时间:2024/05/28 05:14
本文内容摘自《疯狂Android讲义 第3版》李刚 著
package shortcut.song.com.myapplication;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;/** * Created by Administrator on 2017/7/17 0017. */public class ShaderView extends View { public Paint paint; public ShaderView(Context context, AttributeSet set) { super(context, set); paint = new Paint(); paint.setColor(Color.RED); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRect(0,0,getWidth(), getHeight(),paint); }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="shortcut.song.com.myapplication.ShaderActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" /> <Button android:id="@+id/btn_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2"/> <Button android:id="@+id/btn_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3"/> <Button android:id="@+id/btn_4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4"/> <Button android:id="@+id/btn_5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="5"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <shortcut.song.com.myapplication.ShaderView android:id="@+id/my_shaderview" android:layout_width="800dp" android:layout_height="400dp" /> </LinearLayout></LinearLayout>
package shortcut.song.com.myapplication;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapShader;import android.graphics.Color;import android.graphics.ComposeShader;import android.graphics.LinearGradient;import android.graphics.PorterDuff;import android.graphics.RadialGradient;import android.graphics.Shader;import android.graphics.SweepGradient;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class ShaderActivity extends Activity implements View.OnClickListener{ private Shader[] shaders = new Shader[5]; private int[] colors; ShaderView shaderView ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shader); shaderView = (ShaderView)findViewById(R.id.my_shaderview); //获得Bitmap实例 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.plane); //设置渐变颜色组,红、绿、蓝 colors=new int[]{Color.RED, Color.GREEN, Color.BLUE}; //实例化BitmapShader, x方向重复图形, y方向镜像图形 shaders[0] = new BitmapShader(bitmap, Shader.TileMode.REPEAT,Shader.TileMode.MIRROR); shaders[1] = new LinearGradient(0, 0, 100, 100, colors, null,Shader.TileMode.REPEAT); shaders[2] = new RadialGradient(100, 100, 80, colors, null, Shader.TileMode.REPEAT); shaders[3] = new SweepGradient(160, 160, colors, null); shaders[4] = new ComposeShader(shaders[1], shaders[2], PorterDuff.Mode.DARKEN); Button btn1 = (Button)findViewById(R.id.btn_1); Button btn2 = (Button)findViewById(R.id.btn_2); Button btn3 = (Button)findViewById(R.id.btn_3); Button btn4 = (Button)findViewById(R.id.btn_4); Button btn5 = (Button)findViewById(R.id.btn_5); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); btn5.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()) { case R.id.btn_1: shaderView.paint.setShader(shaders[0]); break; case R.id.btn_2: shaderView.paint.setShader(shaders[1]); break; case R.id.btn_3: shaderView.paint.setShader(shaders[2]); break; case R.id.btn_4: shaderView.paint.setShader(shaders[3]); break; case R.id.btn_5: shaderView.paint.setShader(shaders[4]); break; } //通知重绘组件 shaderView.invalidate(); }}
阅读全文
0 0
- Android Shader填充图形
- 使用Shader填充图形
- 使用Shader填充图形
- Android 使用Paint的setShader填充图形
- Android自定义View之不规则图形填充
- Android开发笔记之图形渲染(Shader)
- 初学Android,图形图像之使用Shader填充图像(三十三)
- Shader画笔填充
- 使用 Shader 填充颜色
- 封闭图形填充
- 图形填充程序
- VC 图形填充
- VC 图形填充
- flex填充图形,渐变
- 笔记3:填充图形
- MATLAB填充图形
- 图形和Shader技术
- Unity3D -- 图形 -- Shader概述
- html5 svg,circle,g,path
- Codeforces 825 F Minimal Labels(反向拓扑排序)
- Mybatis的配置和使用
- 2017上半年总结
- ScrollView嵌套ListView、GridView冲突
- Android Shader填充图形
- 深度学习基础数学知识整理
- 如何下载谷歌地图指定日期的历史影像?
- wsimport 不是内部或外部命令,也不是可运行的程序或批处理文件
- 问题 G: 水果消除
- 彻底理解ThreadLocal
- Spring Boot学习记录(四)--问题记录
- 在PySide中嵌入VTK
- Web基础之JSP与EL表达式