我想画一个这样的自定义形状 -
.
一个选项是单独在photoshop中制作每个形状,然后在编码中使用它,但我想知道是否可以使用xml绘制它?
我应该如何绘制这样的形状?不要指望完整的代码,只要给我一点想法或指出我正确的方向.
昨天,我已切换到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)上运行应用程序时,我也得到了正方形.
以防这有用:
Activity延伸AppCompatActivity我认为这个问题在某种程度上关系到使用的top,left,right并bottom为上层.因为如果我只是在一个正方形的顶部放置一个圆圈,预览以及"真实的东西"将按预期的方式对所有API级别起作用.
编辑我也开始了一个全新的项目,使用相同的代码/ xml和以下(自动创建)build.gradle:
Activity延伸 …有没有什么办法来防止部分重叠stroke的shape 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%.
我正在尝试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 android-shape android-shapedrawable material-components material-components-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
我正在尝试创建一个Android具有圆角的视图,并使用平铺图像背景(并且显示在具有平铺背景的另一个视图的顶部).
我可以为角落创建一个可绘制的形状,并为平铺图像创建一个可绘制的位图,但我看不出如何将它们应用于同一个视图.
我试过的一些事情:
将具有平铺背景的视图嵌入带有圆角的视图中 - 不起作用,平铺背景仅显示在顶部,带有方角
用圆角涂在视图的角落 - 由于下面视图的平铺背景,这不起作用(否则会正常工作)
android android-image android-layout android-view android-shapedrawable
我想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)
我还需要在这个形状下方的黄线.
感谢帮助.
我在互联网上浏览了各种解决方案,这使我们能够创建带有圆角的视图。它们中的大多数需要使用创建自定义视图,或者在每次我们需要圆角视图时在 xml 或九补丁中创建一个 drawable。
问题是,当我实现这样的视图时,我需要为每个这样的视图创建一个 drawable,即使两个视图除了背景颜色之外的所有东西都一样。这对我来说有点刺激,我听说 iOS 框架提供了一种创建圆角视图的好方法。任何帮助将非常感激。
编辑:除了圆角,视图和阴影的按压效果也是常用的样式。请让您的解决方案包含这些影响。
android android-shapedrawable material-components material-components-android
我想向文本视图添加圆角和边框。但只有顶角应该是圆角的,底部应该没有边框。已经找到这个了:
https://www.android-examples.com/add-rounded-border-to-textview-programmatically/
但我的底部也有圆角。
我怎样才能改变这个?
xml android android-drawable android-studio android-shapedrawable
我想要一个填充圆圈,具有一定颜色和宽度的笔划,以及内部的图像.
这可以很容易地用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
android ×10
material-components-android ×2
android-view ×1
android-xml ×1
layer-list ×1
xml ×1