【问题标题】:Making a shape using drawable使用drawable制作形状
【发布时间】:2018-06-10 07:22:42
【问题描述】:

在构建Android应用项目时,有一个背景颜色预设文件,如:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
   <gradient
      android:startColor="#ffffff"
      android:centerColor="#00ffff"
      android:endColor="#000000"
      android:type="linear"
      android:angle="90"/>

使用 android:startColor, android:centerColor, android:endColor, android:type, android:angle 的字符串值,我们如何以编程方式制作这个渐变?

【问题讨论】:

  • GradientDrawable
  • 有梯度绘制指南,但它们不基于字符串值
  • 什么字符串值?你什么意思?你检查GradientDrawable 文档了吗?
  • like "#000000"# not 0f-a0-c1..
  • 那些不是字符串。它们是颜色。您可以使用颜色资源来存储它们。

标签: android gradient shape


【解决方案1】:

我想,试着从这段代码中获得灵感,你会得到主要的想法:

GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{startColor, endColor});
drawable.setStroke(strokeIntLength, strokeColor);

GradientDrawable drawableSelected = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{startColorDark, endColorDark});
drawableSelected.setStroke(strokeIntLength, strokeColorDark);

StateListDrawable states = new StateListDrawable();
states.addState(new int[]{android.R.attr.state_selected, android.R.attr.state_pressed}, drawable);
states.addState(new int[]{android.R.attr.state_pressed}, drawableSelected);
states.addState(new int[]{android.R.attr.state_selected}, drawableSelected);
states.addState(new int[]{android.R.attr.state_checked}, drawableSelected);
states.addState(new int[]{}, drawable);

button.setBackgroundDrawable(states);

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多