- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Android 中,我想做这样的事情(但是有 2 种交替的颜色,黑色和白色:
像这样用波纹效果改变颜色
我尝试做的是:
1) 通过 XML 设置默认的 backgroundTint 和波纹颜色
app:backgroundTint="@android:color/black"
app:rippleColor="@android:color/white"
2) onclick方法中,将backgroundTint改为白色,波纹颜色改为黑色
为初始颜色设置一个字符串,即 high_color = "black"
。那么,
fab.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
if(high_color.equals("black")){
fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.white)));
fab.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.black)));
fab.setRippleColor(ContextCompat.getColor(getApplicationContext(), R.color.black));
high_color = "white";
}else {
fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.black)));
fab.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.white)));
fab.setRippleColor(ContextCompat.getColor(getApplicationContext(), R.color.whites));
high_color = "black";
}
}
});
现在我得到这样的东西:
我得到的是这个
有没有办法让这个看起来像第一个?比如减慢波纹动画速度或类似的东西?
最佳答案
好吧,从来没有在 FAB 上尝试过这个,但是为了简单起见,我已经在 ImageButton 上实现了相同的功能,如下所示并且它有效。希望能帮助到你。这是针对大于 21 (Lollipop) 的 API。默认情况下,我的 ImageButton 的静止高度为 6dp,触摸时它会升高到 18dp(6dp + 12dp),如果需要,您可以在 lift_on_touch.xml 中更改它.此外,我正在使用 StateListAnimator,它会根据 ImageButton 的状态变化而变化。
<ImageButton
android:id="@+id/share_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/ripples_on_touch"
android:elevation="6dp"
android:padding="16dp"
android:src="@drawable/ic_share_white_24dp"
android:stateListAnimator="@animator/lift_on_touch"
tools:targetApi="lollipop" />
v21/ripples_on_touch.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="#F83E0ACC"
tools:targetApi="lollipop">
<item>
<shape android:shape="oval">
<solid android:color="#FFFF6F00" />
</shape>
</item>
</ripple>
v21/lift_on_touch.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<set>
<objectAnimator
android:duration="@android:integer/config_longAnimTime"
android:propertyName="scaleX"
android:valueTo="1.250"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_longAnimTime"
android:propertyName="scaleY"
android:valueTo="1.250"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_longAnimTime"
android:propertyName="translationZ"
android:valueTo="12dp"
android:valueType="floatType" />
</set>
</item>
<item>
<set>
<objectAnimator
android:duration="@android:integer/config_longAnimTime"
android:propertyName="scaleX"
android:valueTo="1.0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_longAnimTime"
android:propertyName="scaleY"
android:valueTo="1.0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_longAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"
android:valueType="floatType" />
</set>
</item>
</selector>
关于android - 使用波纹效果更改 FAB 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871943/
如何以编程方式将 TextView 背景设置为 xml/ripple? xml/ripple.xml: 我尝试了
我正在开发 Material Design 界面。我有一些卡片,我希望在单击时产生链式 react 。我已经按照谷歌所说的做了,但没有任何反应。这是我的代码: >
我试图将 FloatingActionButton 波纹设置为类似于 this 来自 Material 设计。 问题是我只得到一个没有波纹的“平面样式”,它只是将按钮从白色更改为橙色,而没有上面链
想象一下我有这么长的一段文字:HELLO THIS IS MY LONG SENTENCE。当我点击它时,我希望 LONG 这个词产生波纹(墨水溅起)。 假设我有这个代码: new RichText(
有人知道 Ripple 是否适用于最新的cordova 版本?因为我正在尝试,我什至无法启动控制面板。当我尝试不使用它时,会弹出一些“警报”: 差距:[“插件管理器”,“启动”,“插件管理器59084
我正在使用 google maps API,我试图让他们的交互式 map 通过 PhoneGap 工作,然后我通过 Ripple 模拟它。 我完全复制了这个教程: http://www.christi
在 Jetpack 中撰写 clickable修饰符默认使用 LocalIndication.current并显示一个绑定(bind)到边界的波纹。这看起来几乎总是很棒,但在某些情况下,圆形的、未绑定
我有一个项目列表(每个项目都包含多个元素),其中每个项目都可以单击并切换 View 。有没有办法对整个md-item-content产生链式 react ?我尝试了 class="ripple" 但这
我正在为我的移动应用程序项目使用 jquery、backbonejs、underscorejs 和 bootstrap 3。我在 ripple 中运行我的应用程序。有时我的控制台会出现这个愚蠢的错误。
我是一名优秀的程序员,十分优秀!