- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这样的看法
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:background="@drawable/ripple"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />
和 ripple.xml 一样
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
一切正常。当我触摸 View 时,它会给我涟漪效应。我正在寻找的是从代码中重复启动 View 上的涟漪动画。将其显示为不确定的进度。所以海浪不停地荡漾。
有点像
Runnable runnable = new Runnable() {
@Override
public void run() {
RippleDrawable drawable = (RippleDrawable) button.getBackground();
drawable.showRipples(true, true); // <-- This is needed
handler.postDelayed(runnable, 500);
}
};
如何做到这一点?
最佳答案
RippleDrawable
响应按下和聚焦状态,前者提供您正在寻找的波纹动画。您可以使用 View.setPressed(boolean)
在宿主视图上切换按下状态。
Runnable pressRunnable = new Runnable() {
@Override
public void run() {
button.setPressed(true);
button.postOnAnimationDelayed(unpressRunnable, 250);
}
};
Runnable unpressRunnable = new Runnable() {
@Override
public void run() {
button.setPressed(false);
button.postOnAnimationDelayed(pressRunnable, 250);
}
};
请记住,用户触摸 Button
也会切换按下状态,因此您可能希望删除或重新发布 OnTouchListener
中的可运行对象。
如果需要,您可以使用 Drawable.setHotspot(float, float)
控制波纹位置,或者在 API 22+ 上,View.dispatchDrawableHotspotChanged(float, float)
并传递 View 相关的 (x, y)
坐标。
关于java - RippleDrawable - 以编程方式显示波纹效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29057803/
我有这样的看法 和 ripple.xml 一样 一切正常。当我触摸 View 时,它会给我涟漪效应。我正在寻找的是从代码中重复启动 View 上的涟漪动画。将其显示为不确定的进度。所
我想在代码中动态创建涟漪。 代码: if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { buyB
我正在尝试创建分段按钮控件,并且我为每个分段使用了一个可绘制对象。
我创建了一个 RippleDrawable,如下所示。但是我不能改变 RippleDrawable 的角半径。它没有像 setCornerRadii(float[] f) 这样的方法。 public
drawable-v21/ripple.xml: TextView : 如果我想将 RippleDrawable 设置为 TextView,我必须设置 android:backgro
我正在寻找这里提到的 RippleDrawable 的源代码 https://developer.android.com/preview/material/animations.html#touch
我试图通过 android 的 RippleDrawable 方法应用 RippleEffect,我首先将 drawable 中的波纹定义为:- 文件名为ugb.xml 然后我尝试将它作为我的抽屉导航
我有一个布局,上面有一个 KenBurnsView 和一个 ImageView(只是一个切换按钮)。当我单击按钮时,会生成一个 Ripple,但绘制在 KenBurnsView 下方。 以前,当我用
我有一个在代码中创建 RippleDrawables 的方法 public class StateApplier { @TargetApi(Build.VERSION_CODES.LOL
我正在尝试将 RippleDrawable 设置为 ListView 行的背景。使用 view.setBackgroundResource(R.drawable.ripple) 时一切正常。尝试时 v
首先,我的目标 API 是 22 (Android L)。一切正常,直到我将目标 API 降低到 19 以支持 Android 4.4 (Kitkat)。现在我收到了这个奇怪的错误。该应用程序不会崩溃
引用 RippleDrawable for Android L,https://developer.android.com/reference/android/graphics/drawable/Ri
我正在使用第三方库,有一种方法使用 DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);。当我在 android 5.0+ 上测试
Android 应用程序意外关闭并在 log-cat 中给出以下错误。 01-22 00:33:58.470 8193-8193/? E/dalvikvm: Could not find class
一段时间以来,我一直在尝试追踪这个问题。我想我前段时间确实找到了解释。不幸的是,它在某处的代码注释中丢失了。 我正在尝试用 Java 创建一个 Material Borderless-Button。首
我继承了 Button。在该类中,我尝试以编程方式更改颜色。 RippleDrawable draw = (RippleDrawable) getContext().getApplicationCon
我尝试在我的手机上运行它,但只有一个白屏。无法弄清楚这里的错误... Java package make.myapplication; import android.os.Bundle; i
我正在开发一款在大型设备上使用双 Pane 布局的应用程序,类似于详细说明 here .布局概要;一个 Pane 包含选项列表,而另一个 Pane 将显示有关从另一个 Pane 中选择的选项的详细信息
范围 RippleDrawable 内部有 selector 作为 item。它有效。 + 问题 无法使
我有不同 draw9patch png 作为背景的按钮。目前按钮由 selector 控制,看起来像这样: 对于 Android Lollipop,他们有一个用于触摸效果的
我是一名优秀的程序员,十分优秀!