`
wang_peng1
  • 浏览: 3942504 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android画图----ShapeDrawable和shader

阅读更多
在这个例程中主要讲述了ShapeDrawable,以及各种Gradient
首先初始化了 mDrawables = new ShapeDrawable[7];默认的是矩形,
当然还有其他形状:
  mDrawables[0] = new ShapeDrawable(new RectShape());
            mDrawables[1] = new ShapeDrawable(new OvalShape());
mDrawables[4] = new ShapeDrawable(new RoundRectShape(outerR, inset,
                                                                 innerR));
            mDrawables[5] = new ShapeDrawable(new PathShape(path, 100, 100));
float[] outerR = new float[] { 12, 12, 12, 12, 0, 0, 0, 0 };
            RectF   inset = new RectF(20, 20, 20, 20);
            float[] innerR = new float[] { 12, 12, 0, 0, 12, 12, 0, 0 };
           
            Path path = new Path();
            path.moveTo(50, 0);
            path.lineTo(0, 50);
            path.lineTo(50, 100);
            path.lineTo(100, 50);
            path.close();

实例化ShapeDrawable后就可以对他们进行设置:
设置渐变
mDrawables[0].getPaint().setShader(makeTiling());
设置颜色
            mDrawables[1].getPaint().setColor(0xFF00FF00);
设置影响 影响呢有很多 可以设置单个 也可以用组合
PathEffect pe = new DiscretePathEffect(10, 2);
            PathEffect pe2 = new CornerPathEffect(8);
            mDrawables[3].getPaint().setPathEffect(
                                                new SumPathEffect(pe2, pe));
其中渐变又包括:
private static Shader makeSweep() {
           return new SweepGradient(150, 25, new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0xFFFF0000 }, null);
        //return new SweepGradient(150, 25, new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF }, new float[]{0.9f,0.1f,0.9f});
        }
       
        private static Shader makeLinear() {
            return new LinearGradient(0, 0, 50, 50,
                              new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF },
                              null, Shader.TileMode.REPEAT);
        }
       
        private  Shader makeTiling() {
            int[] pixels = new int[] { 0xFFFF0000, 0xFF00FF00, 0xFF0000FF, 0};
          
          Bitmap bm = Bitmap.createBitmap(pixels, 2, 2,  Bitmap.Config.ARGB_8888);
           // Bitmap bm = Bitmap.createBitmap(mBitmap, 60, 45,  Bitmap.Config.ARGB_8888);
           
            return new BitmapShader(bm, Shader.TileMode.REPEAT,
                                        Shader.TileMode.REPEAT);
        }

最后在这个实例中 可以自定义一个ShapeDrawable
private static class MyShapeDrawable extends ShapeDrawable {
            private Paint mStrokePaint = new Paint(Paint.LINEAR_TEXT_FLAG);
           
            public MyShapeDrawable(Shape s) {
                super(s);
                mStrokePaint.setStyle(Paint.Style.STROKE);
                mStrokePaint.setColor(Color.GREEN);
            }
           
            public Paint getStrokePaint() {
                return mStrokePaint;
            }
           
            @Override protected void onDraw(Shape s, Canvas c, Paint p) {
//第一个调用父类的p,第二个调用自己刚才设置的p,如果你不想使用默认的父类,默认的颜色为黑了          
    s.draw(c, p);
                s.draw(c, mStrokePaint);
            }

mDrawables[6] = new MyShapeDrawable(new ArcShape(45, 360));
MyShapeDrawable msd = (MyShapeDrawable)mDrawables[6];
            msd.getStrokePaint().setStrokeWidth(1);
        }
分享到:
评论

相关推荐

    android ShapeDrawable 代码

    在Android开发中,Shape Drawable是一种常用的图形绘制工具,它允许开发者通过XML定义各种形状,如矩形、圆形、线和梯形等,并可以设置填充颜色、边框宽度和颜色等属性。然而,当我们需要更动态地创建和改变图形时,...

    Android新手入门2016(16)--画图

    在Android开发领域,画图是实现用户界面个性化和复杂功能的重要手段。本教程将带你走进Android画图的世界,让你从新手快速成长为能绘制出丰富多彩图形的开发者。在2016年的这个系列教程中,我们将重点探讨如何在...

    ShapeDrawable实例

    - **描边(Stroke)**: `android:strokeWidth`定义边框宽度,`android:strokeColor`定义边框颜色,还可以设置`android:strokeDashWidth`和`android:strokeDashGap`来创建虚线效果。 3. **渐变(Gradient)**: - ...

    android画图总结

    在Android平台上,画图是构建用户界面和实现各种视觉效果的关键技术。本文将对Android画图的相关知识进行详细的总结,包括Bitmap、Drawable、Paint、Animation等核心概念。 首先,我们来了解一下【Android画图学习...

    Android-TabBar-master标签栏控件支持自定义圆角弧度

    我们会在背景图层或者使用`CardView`、`LinearLayout`等容器时设置`android:background`属性,并配合`android:radius`、`android:topLeftRadius`、`android:topRightRadius`、`android:bottomLeftRadius`和`android:...

    Android画图学习笔记

    ### Android画图学习笔记知识点概览 #### 一、Android画图基础知识介绍 - **类的简介** - 在Android开发过程中,对于图形绘制的理解不仅仅局限于Google提供的官方文档,还需要深入掌握Java的基础类库,尤其是那些...

    Android代码-Custom shaped layout for Android 自定义形状布局

    Custom shaped layout for Android 自定义形状布局 Features Clip layout and its childview. 2 way to set shape. Also custom shape by implement ShapeModel. Dependency Add this in your build.gradle file ...

    android ShapeDrawable实例

    这篇博客文章“android ShapeDrawable实例”可能是关于如何在实际项目中使用ShapeDrawable来实现各种UI元素的详细教程。Shape Drawable是XML文件中定义的一种图形,通常用作视图的背景,可以轻松地创建矩形、圆角...

    Android画图学习.pdf

    ### Android画图学习知识点 #### 一、概览与背景 在进行Android开发的过程中,开发者可能会遇到关于如何处理图形和图像的问题。这部分内容虽然不是Android SDK文档的重点,但对于希望深入理解Android图形绘制机制...

    Android画图学习

    ### Android画图学习知识点概述 #### 一、类的简介 **1.1 获取资源** 在Android开发过程中,经常会涉及到从资源文件(res目录)中获取各种类型的资源,如图片、字符串等。这部分功能主要通过`android.content.res....

    Android-Android多种形状波纹特效可以用来实现一些背景特效

    "Android-Android多种形状波纹特效可以用来实现一些背景特效"这个主题主要聚焦于Android中的波纹动画,这是一种常用于触摸反馈或者过渡效果的动态图形。波纹效果通常会以圆形或矩形等形式扩散,给人一种深度和动感,...

    android 画图 bitmap drawable canvas paint

    在Android平台上,绘制图形是一项基本任务,涉及到多个关键类,如Bitmap、Drawable和Canvas,以及Paint。这些类共同构成了Android图形系统的核心,使得开发者能够创建丰富的用户界面和自定义视图。 首先,Bitmap是...

    android xml shape drawable

    `android:startColor`和`android:endColor`分别定义渐变的起始和结束颜色,`android:type`定义渐变类型(linear或radial)。 例如,线性渐变: ```xml android:startColor="#FF0000" android:endColor="#00FF00...

    android自定义view-打造圆形图片(三)

    在Android开发中,自定义View是提升应用独特性和用户体验的重要手段。本篇文章将重点讨论如何在Android中创建一个可以显示圆形或圆角图片的自定义ImageView。我们将通过三种不同的方法来实现这一目标,以满足不同...

    绘制android图标左上角小三角形

    在Android开发中,自定义视图是提升用户体验和界面独特性的重要手段。本文将深入探讨如何使用`Canvas`来在`ImageView`的左上角绘制一个三角形,并结合文字进行展示,以实现标题中提到的功能。 ### 1. `ImageView`与...

    Android-Android平台上的一款验证码控件支持各种自定义效果

    例如,使用`Paint`对象设置字体颜色和大小,使用`ShapeDrawable`或`BitmapShader`定制背景。 5. **交互反馈**:当用户输入验证码时,提供实时的输入验证。可以使用`TextWatcher`监听文本变化,如果输入的验证码与...

    Android图像介绍-Drawable

    Android SDK提供了多种Drawable的实现类,如BitmapDrawable、NinePatchDrawable、ShapeDrawable等,每种类型都有其特定的用途和优势。 1. BitmapDrawable:这是最常见的Drawable类型,用于显示位图图像(.png, .jpg...

    android 放大镜ShapeDrawable妙用分享

    指定Shader,shader可以接受一个图片和matrix 所以问题就顺利的解决了:) 具体实现如下:[java] 代码如下:float scale = 1.2f; int cx = 224; int cy = 357; int r = 200; // 指定形状创建一个ShapeDrawable ...

    Android绘图介绍-复杂图形描画

    在Android平台上,绘制复杂图形是一项重要的技能,尤其对于开发者来说,它能让你的应用拥有独特的视觉效果和交互体验。本文将深入探讨Android中的绘图机制,包括基础概念、API使用以及如何绘制复杂的图形。 首先,...

Global site tag (gtag.js) - Google Analytics