如何在渐变背景上恢复涟漪效果

问题描述 投票:0回答:2

我正在制作笔记应用。我从设计开始,所以还没有任何代码。我制作了带有“ +”和渐变背景图像的按钮,但最终失去了波纹效果。我看到了一些类似的问题,但我什么都不懂。 如何恢复波纹效果?当前,它仅在图像上起作用,但是我希望在整个按钮(包括背景)上起作用。

add_button_design.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
  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">

  <item>
    <shape>
      <gradient android:startColor="#706fd3" android:endColor="#34ace0" android:angle="45"/>
      <corners android:radius="50dp"/>
      <stroke android:width="1px" android:color="#227093"/>
    </shape>
  </item>

  <item>
    <bitmap android:src="@drawable/add_button_image"/>
  </item>

  <item>
    <ripple android:color="?android:attr/colorControlHighlight">
      <item android:drawable="@drawable/add_button_image"/>
    </ripple>
  </item>
</layer-list>

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@color/colorPrimaryDark">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <Button
                android:layout_width="75dp"
                android:layout_height="75dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"
                android:layout_margin="20dp"
                android:background="@drawable/add_button_design"/>
        </RelativeLayout>


    </FrameLayout>
</RelativeLayout>

我知道这可以被视为重复的问题,但其他问题与我的计划不符。

xml android-layout xamarin xamarin.android
2个回答
1
投票

请在selector标签中添加ripple。这是运行GIF。enter image description here

这里是代码。

   <layer-list
  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">

  <item>
    <shape>
      <gradient android:startColor="#706fd3" android:endColor="#34ace0" android:angle="45"/>
      <corners android:radius="50dp"/>
      <stroke android:width="1px" android:color="#227093"/>
    </shape>
  </item>

  <item>
    <bitmap android:src="@drawable/add_button_image"/>
  </item>

  <item>
    <ripple android:color="?android:attr/colorControlHighlight">
      <!--<item android:drawable="@drawable/add_button_image"/>-->

     <selector>
       <!-- unclick the background-->
        <item
            android:drawable="@drawable/add_button_image"
            android:state_pressed="false" />
     <!-- click the background-->
        <item
            android:drawable="@drawable/add_button_image"
            android:state_pressed="true" />
      </selector>
    </ripple>
  </item>
</layer-list>

0
投票

使用@Leon基数,我设法修复了它。只需将所有内容放入Ripple标记

<?xml version="1.0" encoding="utf-8"?>
<layer-list
 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">

  <item>
    <ripple android:color="?android:attr/colorControlHighlight">
      <item>
        <shape>
          <gradient android:startColor="#706fd3" android:endColor="#34ace0" android:angle="45"/>
          <corners android:radius="50dp"/>
          <stroke android:width="1px" android:color="#227093"/>
        </shape>
      </item>

      <item>
        <bitmap android:src="@drawable/add_button_image"/>
      </item>
    </ripple>
  </item>
</layer-list>
© www.soinside.com 2019 - 2024. All rights reserved.