首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android -轻量级渐变

Android -轻量级渐变
EN

Stack Overflow用户
提问于 2018-08-05 10:54:57
回答 1查看 77关注 0票数 1

来自Android的开发者参考:

代码语言:javascript
复制
LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)

所以我想知道是否有一种方法可以在onDraw()方法中绘制渐变?这里的问题是,我需要输入坐标,无论我要画什么,都要绘制渐变。如果我需要在不同大小和位置的多个形状上使用相同的渐变怎么办?更重要的是,如果我绘制渐变的形状改变了它的位置怎么办?甚至Android Studio也建议您不要在onDraw()方法中初始化变量。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-06 03:16:33

我所能做的,是在.xml文件中创建一个带有渐变的可绘制图形。

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:startColor="@android:color/holo_blue_light"
                android:endColor="@android:color/holo_red_dark"
                android:angle="45"/>
        </shape>
    </item>
</selector>

然后在你的onDraw()中这样做(显然是在一个初始化函数中,因为你只需要初始化一次,至少我是这样做的):

代码语言:javascript
复制
Drawable d = ContextCompat.getDrawable(context, R.drawable.indicator_active);

要绘制它,只需这样做

代码语言:javascript
复制
d.setBounds(l, t, r, b);
d.draw(canvas);

如果有人知道更简单/更灵活的方法,请让我知道!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51691069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档