适用于Android的xml中的梯形阴影

hbtpoprock

我想<RelativeLayout>为Android创建一个阴影框,如下图所示:

在此处输入图片说明

影子框可绘制对象将在其<gradient>内部创建,如下所示:

在此处输入图片说明

我正在努力,因为我正在尝试以梯形形状进行操作,<RelativeLayout>以使其在屏幕上站立时可以看到。


这是我的代码:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#fff"
   tools:context=".LoginActivity">

   <RelativeLayout
       android:id="@+id/myRectangleView"
       android:layout_width="354dp"
       android:layout_height="239dp"
       android:layout_marginStart="30.5dp"
       android:layout_marginLeft="30.5dp"
       android:layout_marginTop="84dp"       
       android:background="@drawable/my_drawable"    
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent">

       <ImageView
           android:layout_width="48dp"
           android:layout_height="48dp"
           android:layout_alignParentStart="true"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:layout_marginStart="15dp"
           android:layout_marginLeft="15dp"
           android:layout_marginTop="15dp"           
           android:contentDescription="avatar"
           app:srcCompat="@mipmap/ic_launcher_round" />

   </RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

my_drawable.xml

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

   <!-- image shadow below can be use just fine-->
   <item
       android:drawable="@drawable/image_shadow">
   </item>

   <!-- drawn shadow below is what I want it to be trapezoidal shape -->
   <!-- right now it's a triangle, and I unsuccessfully tried to overlap it so it'd become trapezoid -->
   <item
       android:drawable="@drawable/drawn_shadow">
   </item>

   <item
       android:top="0dp"
       android:bottom="0dp">
       <shape
           android:shape="rectangle">
           <solid
               android:color="#d1d1d1"/>
           <stroke
               android:width="0.01dp"
               android:color="#9c9c9c"/>
           <corners android:bottomRightRadius="10dp"
               android:bottomLeftRadius="10dp"
               android:topLeftRadius="0dp"
               android:topRightRadius="0dp"/>
       </shape>
   </item>
   <item
       android:top="0dp"
       android:bottom="2dp">
       <shape
           android:shape="rectangle">
           <solid
               android:color="#d1d1d1"/>
           <stroke
               android:width="0.01dp"
               android:color="#9c9c9c"/>
           <corners android:bottomRightRadius="10dp"
               android:bottomLeftRadius="10dp"
               android:topLeftRadius="0dp"
               android:topRightRadius="0dp"/>
       </shape>
   </item>
   <item
       android:top="0dp"
       android:bottom="4dp">
       <shape
           android:shape="rectangle">
           <gradient
               android:angle="90"
               android:endColor="#564DA1"
               android:centerColor="#463894"
               android:startColor="#2D216F"
               android:centerY="0.75"
               android:type="linear" />
           <corners android:bottomRightRadius="10dp"
               android:bottomLeftRadius="10dp"
               android:topLeftRadius="0dp"
               android:topRightRadius="0dp"/>
       </shape>
   </item>
   <item
       android:top="0dp"
       android:bottom="157.5dp">
       <shape>
           <gradient
               android:startColor="#564DA1"
               android:centerColor="#e8e8e8"
               android:endColor="#564DA1"
               android:type="linear"
               android:centerY="0.75"
               android:angle="90"/>
       </shape>
   </item>
   <item
       android:top="125dp"
       android:bottom="4dp">
       <shape>
           <gradient
               android:startColor="#574EA4"
               android:centerColor="#574EA4"
               android:endColor="#574EA4"
               android:type="linear"
               android:centerY="0.75"
               android:angle="90"/>
           <corners android:bottomRightRadius="10dp"
               android:bottomLeftRadius="10dp"
               android:topLeftRadius="0dp"
               android:topRightRadius="0dp"/>
       </shape>
   </item>
</layer-list>

image_shadow.9.png

在此处输入图片说明

Drawn_shadow.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item >
       <rotate
           android:fromDegrees="45"
           android:toDegrees="-45"
           android:pivotX="15%"
           android:pivotY="-36%" >
           <shape
               android:shape="rectangle"  >
                   <padding
                       android:bottom="50dp"
                       android:left="0dp"
                       android:right="0dp"
                       android:top="0dp" />
               <gradient
                   android:angle="225"
                   android:endColor="@android:color/transparent"
                   android:centerColor="@android:color/transparent"
                   android:startColor="#999999"
                   android:centerY="0.1"
                   android:type="linear" />
           </shape>
       </rotate>
   </item>
</layer-list>
万沙达加

主Xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#23FFC1"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="450dp"
        android:layout_margin="0dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        >
        <ImageView
            android:layout_width="300dp"
            android:layout_height="400dp"
            android:src="@drawable/box"/>
        <androidx.appcompat.widget.AppCompatImageView
            android:layout_width="300dp"
            android:layout_height="50dp"
            app:srcCompat="@drawable/shadow"
            />

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

box.xml

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="10dp" />
    <gradient
        android:angle="90"
        android:startColor="#422570"
        android:centerColor="#7E4DF0"
        android:endColor="#4D2779" />
</shape>

shadow.xml

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt"
    android:height="50dp"
    android:width="300dp"
    android:viewportHeight="30"
    android:viewportWidth="100">
    <path
        android:pathData="M 5,0 L 95,0 100,30 0,30 5,0 z" >
        <aapt:attr name="android:fillColor">
            <gradient
            android:endColor="#00FFFFFF"
            android:endX="50"
            android:endY="99"
            android:startColor="#C47C7C7C"
            android:startX="50"
            android:startY="1"
            android:type="linear" />
        </aapt:attr>
    </path>
</vector>

根据需要更改颜色或大小我只是使用LinearLayout,可以根据需要使用Relative。

即使使用androidx,也要将其添加到gradle.build中

defaultConfig {

    //...

    vectorDrawables {
        useSupportLibrary true
    }
}

我的输出 最终输出带阴影

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

xml onClicks不再适用于Android Lollipop中的活动

来自分类Dev

适用于Android的AsyncTask中的doInBackground

来自分类Dev

SSAO 和阴影贴图 | 阴影不适用于 SSAO

来自分类Dev

使用适用于Android的Eclipse IDE在Android代码中搜索对布局xml文件的引用

来自分类Dev

适用于Android的自定义XML元素

来自分类Dev

在Android终端中运行适用于Android的Python(Qpython)

来自分类Dev

适用于Android的OpenSSL

来自分类Dev

适用于Android的Pusher

来自分类Dev

适用于Android的Rhino

来自分类Dev

适用于 Android 的 isInViewport

来自分类Dev

Flexbox:元素阴影不适用于order属性

来自分类Dev

引导阴影不适用于网格系统

来自分类Dev

Flexbox:元素阴影不适用于order属性

来自分类Dev

框阴影不适用于该部分

来自分类Dev

阴影不适用于指定面色的色块吗?

来自分类Dev

适用于Android的音频pubnub webrtc中的问题

来自分类Dev

适用于Android的Unity插件中的onPause / onResume

来自分类Dev

无法使OnItemClickListener在Java中适用于Android

来自分类Dev

毕加索不适用于Android中的Recycler View

来自分类Dev

适用于Android应用的Facebook“赞”按钮中的异常

来自分类Dev

在适用于Android的Apache Cordova中访问C ++代码

来自分类Dev

适用于android <= 4.3的WebView中的TLS 1.1、1.2

来自分类Dev

适用于Android的JavaFX Port中的事件处理

来自分类Dev

toLocaleString()在Android中不适用于React Native

来自分类Dev

Android中的底部导航仅适用于双击,

来自分类Dev

Android-onClickListener不适用于CardView中的ImageButton

来自分类Dev

渐变颜色不适用于android studio中的按钮

来自分类Dev

从适用于Android的Java中的Map的ArrayList获取地图

来自分类Dev

适用于Android的Mono中的内存高效位图处理

Related 相关文章

热门标签

归档