标签: android-shapedrawable

Android:绘制自定义形状

我想画一个这样的自定义形状 - 自定义形状.

一个选项是单独在photoshop中制作每个形状,然后在编码中使用它,但我想知道是否可以使用xml绘制它?

我应该如何绘制这样的形状?不要指望完整的代码,只要给我一点想法或指出我正确的方向.

android android-shapedrawable

16
推荐指数
1
解决办法
2万
查看次数

对于低于23的API,图层列表中的形状可绘制不正确

昨天,我已切换到Android Studio 2.1.3版.今天,我重新打开了我的一个项目,并试图添加一些图层列表drawables用于ImageView.例如这一个:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:width="80px" android:height="80px"
        android:top="0px" android:left="0px" 
        android:right="0px" android:bottom="0px">
        <shape android:shape="rectangle">
            <solid android:color="@color/deep_orange"/>
        </shape>
    </item>
    <item android:width="60px" android:height="60px"
        android:top="10px" android:left="10px" 
        android:right="10px" android:bottom="10px">
        <shape android:shape="oval">
            <solid android:color="@color/light_yellow"/>
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

橙色方形上方的黄色圆圈

这是我在升级Android Studio版本之前所获得的,如果我选择23作为"在IDE中渲染布局时使用的Android版本",这就是我现在在预览中获得的内容.

但是,如果我选择23以下的任何版本,我只会得到正方形:

橙色方块,没有圆圈

不幸的是,在模拟器(Lollipop 22)或设备(Jellybean 18)上运行应用程序时,我也得到了正方形.

以防这有用:

  • compileSdkVersion 23
  • buildToolsVersion"23.0.3"
  • minSdkVersion 11
  • targetSdkVersion 23
  • 没有什么用于buildType调试
  • 依赖项:编译'com.android.support:appcompat-v7:23.0.1'
  • Activity延伸AppCompatActivity

我认为这个问题在某种程度上关系到使用的top,left,rightbottom为上层.因为如果我只是在一个正方形的顶部放置一个圆圈,预览以及"真实的东西"将按预期的方式对所有API级别起作用.

编辑我也开始了一个全新的项目,使用相同的代码/ xml和以下(自动创建)build.gradle:

  • compileSdkVersion 24
  • buildToolsVersion"24.0.2"
  • minSdkVersion 15
  • targetSdkVersion 24
  • 没有什么用于buildType调试
  • 依赖项:编译'com.android.support:appcompat-v7:24.2.0'
  • Activity延伸 …

android layer-list android-studio android-shapedrawable

10
推荐指数
1
解决办法
8336
查看次数

防止形状可画中风的部分重叠

有没有什么办法来防止部分重叠strokeshape drawable.我更喜欢在形状的边界上完全重叠笔画.

这是我的xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <padding
        android:bottom="0dp"
        android:top="0dp"
        android:left="0dp"
        android:right="0dp" />
    <solid android:color="@color/green" />
    <stroke android:color="@color/red_50"
        android:width="20dp"
        android:dashGap="2dp"
        android:dashWidth="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

colors.xml

<color name="green">#0f0</color>
<color name="red_50">#8f00</color>
Run Code Online (Sandbox Code Playgroud)

这是实现的目标
示例图像

正如您所看到的那样,笔划与实体部分重叠了50%,但我希望它是100%.

android android-shapedrawable

9
推荐指数
1
解决办法
915
查看次数

只有一个圆角的 ImageView

我正在尝试ImageView在下图中制作一个圆角,但右下角。尝试使用背景形状,但它根本不起作用。Glide 加载的所有图像。我应该使用类似的东西ViewOutlineProvider吗?有没有一种有效的方法来做到这一点?谢谢!

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners
        android:radius="2dp"
        android:bottomRightRadius="20dp"
        android:bottomLeftRadius="0dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

Android Material 文档中的示例

android android-shape android-shapedrawable material-components material-components-android

8
推荐指数
2
解决办法
8589
查看次数

Android:为按钮添加霓虹灯发光效果

我想在按钮上有发光效果(在 android studio 中),如图所示:

按钮设计图像

我不需要背景图像,因此为了获得这种效果,我尝试在 xml 文件中执行此操作。我为按钮添加了一个描边,并为按钮提供了一个阴影(与描边颜色相同)。

我使用了 90 度角的线性渐变,开始和结束颜色与笔划相同,中心颜色与背景颜色相同。请看代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <layer-list>
        <item android:right="5dp" android:top="0dp">
            <shape>
                <corners android:radius="50dp" />
                <gradient
                    android:angle="45"
                    android:startColor="#8008c3fa"
                    android:endColor="#8008c3fa"
                    android:type="linear"
                    />
            </shape>
        </item>
        <item android:bottom="5dp" android:left="6dp" android:right="10dp" android:top="5dp">
            <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
                <corners
                    android:radius="50dp"
                    />
                <gradient
                    android:angle="90"
                    android:centerX="50%"
                    android:centerColor="@color/trans_parent"
                    android:startColor="#8008c3fa"
                    android:endColor="#8008c3fa"
                    android:type="linear"
                    />
                <padding
                    android:left="0dp"
                    android:top="0dp"
                    android:right="0dp"
                    android:bottom="0dp"
                    />
                <size
                    android:width="270dp"
                    android:height="60dp"
                    />
                <stroke
                    android:width="2.5dp"
                    android:color="#08c3fa"
                    />
            </shape>
        </item>
    </layer-list>
</item>

</selector>
Run Code Online (Sandbox Code Playgroud)

对于上面的 xml,我得到以下结果:

代码的结果图像

虽然设计和结果图像看起来完全不同,但我认为如果我们增加中心颜色高度并保持阴影的淡出效果,它就可以工作。但我不能做同样的事情。

android android-xml android-button android-drawable android-shapedrawable

8
推荐指数
2
解决办法
1万
查看次数

Android - 如何创建带圆角和平铺图像背景的视图?

我正在尝试创建一个Android具有圆角的视图,并使用平铺图像背景(并且显示在具有平铺背景的另一个视图的顶部).

我可以为角落创建一个可绘制的形状,并为平铺图像创建一个可绘制的位图,但我看不出如何将它们应用于同一个视图.

我试过的一些事情:

  • 将具有平铺背景的视图嵌入带有圆角的视图中 - 不起作用,平铺背景仅显示在顶部,带有方角

  • 用圆角涂在视图的角落 - 由于下面视图的平铺背景,这不起作用(否则会正常工作)

android android-image android-layout android-view android-shapedrawable

7
推荐指数
1
解决办法
1629
查看次数

如何在xml android中构建梯形形状?

我想shape用它构建它bottom line并且text在里面我很困惑如何实现这个我厌倦了一些代码但是没有得到必需的东西.

期望的结果

到目前为止我已经尝试过这段代码

shape.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- Colored rectangle-->
    <item>
        <shape android:shape="rectangle">
            <size
                android:width="100dp"
                android:height="40dp" />
            <solid android:color="#13a89e" />
        </shape>
    </item>


    <!-- This rectangle for the right side -->
    <!-- Their color should be the same as layout's background -->
    <item
        android:right="-100dp"
        android:left="100dp"
        android:top="-100dp"
        android:bottom="-100dp">
        <rotate
            android:fromDegrees="45">
            <shape android:shape="rectangle">
                <solid android:color="#ffffff" />
            </shape>
        </rotate>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

它提供了以下结果.我的尝试

我还需要在这个形状下方的黄线.

感谢帮助.

android android-layout android-shapedrawable

6
推荐指数
2
解决办法
3979
查看次数

Android:有没有一种简单的方法可以为视图创建圆角,而不必每次都创建单独的可绘制对象?

我在互联网上浏览了各种解决方案,这使我们能够创建带有圆角的视图。它们中的大多数需要使用创建自定义视图,或者在每次我们需要圆角视图时在 xml 或九补丁中创建一个 drawable。

问题是,当我实现这样的视图时,我需要为每个这样的视图创建一个 drawable,即使两个视图除了背景颜色之外的所有东西都一样。这对我来说有点刺激,我听说 iOS 框架提供了一种创建圆角视图的好方法。任何帮助将非常感激。

编辑:除了圆角,视图和阴影的按压效果也是常用的样式。请让您的解决方案包含这些影响。

android android-shapedrawable material-components material-components-android

5
推荐指数
1
解决办法
3839
查看次数

Android Studio 中的圆角和边框

我想向文本视图添加圆角和边框。但只有顶角应该是圆角的,底部应该没有边框。已经找到这个了:

https://www.android-examples.com/add-rounded-border-to-textview-programmatically/

但我的底部也有圆角。

我怎样才能改变这个?

xml android android-drawable android-studio android-shapedrawable

5
推荐指数
1
解决办法
8291
查看次数

如何以编程方式使用笔画制作圆形绘图?

背景

我想要一个填充圆圈,具有一定颜色和宽度的笔划,以及内部的图像.

这可以很容易地用XML完成(这只是一个示例):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size
                android:width="120dp" android:height="120dp"/>
            <solid android:color="#ffff0000"/>
            <stroke
                android:width="3dp" android:color="#ff00ff00"/>
        </shape>
    </item>
    <item
        android:width="60dp" android:height="60dp" android:drawable="@android:drawable/btn_star"
        android:gravity="center"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题

我需要具有以上某些属性以编程方式进行更改,因此我无法使用XML文件,但这个想法仍然是相同的.

事实是,我无法找到一种简单的方法来在OvalShape drawable上绘制,就像在XML中一样.我找不到这样做的功能.

我尝试了什么

StackOverflow上有解决方案,但我找不到一个运行良好的解决方案.我发现只有一个在这里,但它的划线正在削减.

但是,我通过一种方式来解决这个问题,通过使用一个仅用于描述本身的XML:

stroke_drawable.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <stroke
        android:width="4dp" android:color="@android:color/white"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

码:

    final int strokeDrawableResId = R.drawable.stroke_drawable;
    Drawable innerDrawable = ResourcesCompat.getDrawable(getResources(), ..., null);
    final Drawable strokeDrawable = ResourcesCompat.getDrawable(getResources(), strokeDrawableResId, null);
    ShapeDrawable biggerCircle = new ShapeDrawable(new OvalShape());
    int size = ...;
    biggerCircle.setIntrinsicHeight(size);
    biggerCircle.setIntrinsicWidth(size);
    biggerCircle.getPaint().setColor(0xffff0000);
    biggerCircle.setBounds(new Rect(0, 0, size, size));
    LayerDrawable layerDrawable …
Run Code Online (Sandbox Code Playgroud)

android android-drawable layerdrawable android-shapedrawable

4
推荐指数
1
解决办法
6057
查看次数