在这个例程中主要讲述了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开发中,Shape Drawable是一种常用的图形绘制工具,它允许开发者通过XML定义各种形状,如矩形、圆形、线和梯形等,并可以设置填充颜色、边框宽度和颜色等属性。然而,当我们需要更动态地创建和改变图形时,...
在Android开发领域,画图是实现用户界面个性化和复杂功能的重要手段。本教程将带你走进Android画图的世界,让你从新手快速成长为能绘制出丰富多彩图形的开发者。在2016年的这个系列教程中,我们将重点探讨如何在...
- **描边(Stroke)**: `android:strokeWidth`定义边框宽度,`android:strokeColor`定义边框颜色,还可以设置`android:strokeDashWidth`和`android:strokeDashGap`来创建虚线效果。 3. **渐变(Gradient)**: - ...
在Android平台上,画图是构建用户界面和实现各种视觉效果的关键技术。本文将对Android画图的相关知识进行详细的总结,包括Bitmap、Drawable、Paint、Animation等核心概念。 首先,我们来了解一下【Android画图学习...
我们会在背景图层或者使用`CardView`、`LinearLayout`等容器时设置`android:background`属性,并配合`android:radius`、`android:topLeftRadius`、`android:topRightRadius`、`android:bottomLeftRadius`和`android:...
### Android画图学习笔记知识点概览 #### 一、Android画图基础知识介绍 - **类的简介** - 在Android开发过程中,对于图形绘制的理解不仅仅局限于Google提供的官方文档,还需要深入掌握Java的基础类库,尤其是那些...
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实例”可能是关于如何在实际项目中使用ShapeDrawable来实现各种UI元素的详细教程。Shape Drawable是XML文件中定义的一种图形,通常用作视图的背景,可以轻松地创建矩形、圆角...
### Android画图学习知识点 #### 一、概览与背景 在进行Android开发的过程中,开发者可能会遇到关于如何处理图形和图像的问题。这部分内容虽然不是Android SDK文档的重点,但对于希望深入理解Android图形绘制机制...
### Android画图学习知识点概述 #### 一、类的简介 **1.1 获取资源** 在Android开发过程中,经常会涉及到从资源文件(res目录)中获取各种类型的资源,如图片、字符串等。这部分功能主要通过`android.content.res....
"Android-Android多种形状波纹特效可以用来实现一些背景特效"这个主题主要聚焦于Android中的波纹动画,这是一种常用于触摸反馈或者过渡效果的动态图形。波纹效果通常会以圆形或矩形等形式扩散,给人一种深度和动感,...
在Android平台上,绘制图形是一项基本任务,涉及到多个关键类,如Bitmap、Drawable和Canvas,以及Paint。这些类共同构成了Android图形系统的核心,使得开发者能够创建丰富的用户界面和自定义视图。 首先,Bitmap是...
`android:startColor`和`android:endColor`分别定义渐变的起始和结束颜色,`android:type`定义渐变类型(linear或radial)。 例如,线性渐变: ```xml android:startColor="#FF0000" android:endColor="#00FF00...
在Android开发中,自定义View是提升应用独特性和用户体验的重要手段。本篇文章将重点讨论如何在Android中创建一个可以显示圆形或圆角图片的自定义ImageView。我们将通过三种不同的方法来实现这一目标,以满足不同...
在Android开发中,自定义视图是提升用户体验和界面独特性的重要手段。本文将深入探讨如何使用`Canvas`来在`ImageView`的左上角绘制一个三角形,并结合文字进行展示,以实现标题中提到的功能。 ### 1. `ImageView`与...
例如,使用`Paint`对象设置字体颜色和大小,使用`ShapeDrawable`或`BitmapShader`定制背景。 5. **交互反馈**:当用户输入验证码时,提供实时的输入验证。可以使用`TextWatcher`监听文本变化,如果输入的验证码与...
Android SDK提供了多种Drawable的实现类,如BitmapDrawable、NinePatchDrawable、ShapeDrawable等,每种类型都有其特定的用途和优势。 1. BitmapDrawable:这是最常见的Drawable类型,用于显示位图图像(.png, .jpg...
指定Shader,shader可以接受一个图片和matrix 所以问题就顺利的解决了:) 具体实现如下:[java] 代码如下:float scale = 1.2f; int cx = 224; int cy = 357; int r = 200; // 指定形状创建一个ShapeDrawable ...
在Android平台上,绘制复杂图形是一项重要的技能,尤其对于开发者来说,它能让你的应用拥有独特的视觉效果和交互体验。本文将深入探讨Android中的绘图机制,包括基础概念、API使用以及如何绘制复杂的图形。 首先,...