【问题标题】:XML Shape Drawable not showing upXML Shape Drawable 未显示
【发布时间】:2014-12-17 13:24:36
【问题描述】:

我正在尝试实现以下效果,这是一个看起来是浮动的圆圈:http://imgur.com/fjazcfa

为了实现这一点,我使用了两个ImageViews,每个都填充了一个可绘制的形状。圆圈ImageView 放置在阴影ImageView 的顶部,使圆圈看起来像是漂浮的。我的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="56dp"
                android:layout_height="56dp">

    <ImageView
        android:id="@+id/shadow_ImageView"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:background="@drawable/circle_shadow"
        android:layout_centerInParent="true"/>

    <ImageView
        android:id="@+id/color_ImageView"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerInParent="true"
        android:src="@drawable/circle"/>

</RelativeLayout>

我的问题是,虽然两个 xml 形状可绘制对象都显示在布局预览中,但只有圆圈显示在实际设备上。以下是在设备上未显示的 circle_shadow 的定义:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">

    <size
        android:width="48dp"
        android:height="48dp"/>

    <gradient
        android:endColor="@color/clear"
        android:startColor="@color/black"
        android:type="radial"
        android:gradientRadius="125%"/>

</shape>

以及在设备上显示的圆的定义:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">
    <solid android:color="@color/orange"/>
    <size
        android:width="40dp"
        android:height="40dp"/>
</shape>

【问题讨论】:

    标签: android android-layout android-imageview android-drawable


    【解决方案1】:

    试试这个.. 更改您的 circle_shadow 中的此代码

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
    
        <solid android:color="#11000000" />
    
        <gradient
            android:centerColor="@android:color/transparent"
            android:endColor="@android:color/black"
            android:startColor="@android:color/black" />
    
    </shape>
    

    【讨论】:

    • circle_shadow 现在出现了,但显然不是渐变。我想做一些看起来像阴影而不是灰色圆圈的东西。
    • 那行不通。为了让它看起来像一个阴影,渐变需要是径向类型的,并且需要一个渐变半径。
    • 纯色解决了我的问题
    【解决方案2】:

    试试这个,

    shadow.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item><layer-list>
                <item android:right="5dp" android:top="5dp"><shape android:shape="rectangle">
                        <corners android:bottomLeftRadius="80dp" android:bottomRightRadius="80dp" android:topLeftRadius="80dp" android:topRightRadius="80dp" />
    
                        <gradient android:centerColor="@android:color/transparent" android:endColor="#1A000000" android:startColor="#1A000000" />
    
                        <size android:height="150dp" android:width="150dp" />
    
    <!--                     <solid android:color="#1A000000" /> -->
                    </shape></item>
                <item android:bottom="10dp" android:left="10dp"><shape android:shape="rectangle">
    
    
                        <solid android:color="#F87217" />
    
                        <size android:height="150dp" android:width="150dp" />
    
                        <corners android:bottomLeftRadius="80dp" android:bottomRightRadius="80dp" android:topLeftRadius="80dp" android:topRightRadius="80dp" />
    
                        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
                    </shape></item>
            </layer-list></item>
    
    </selector>
    

    button.xml

    <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="69dp"
            android:background="@drawable/shadow" />
    

    【讨论】:

    • 如果两个图层都在一个可绘制对象中,我还能为阴影图层设置动画吗?
    • 我想给阴影设置动画,使它看起来像圆圈在上升。
    • 对于按钮单击动画,您必须创建一个单独的选择器并相应地设置该选择器中的两个可绘制对象
    • 我将使用可绘制对象,因为它使阴影看起来更逼真。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多