当前位置: 首页 > 面试题库 >

RippleDrawable-以编程方式显示纹波效果

全弘深
2023-03-14
问题内容

我有这样的看法

<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" />

和涟漪.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>

一切正常。当我触摸视图时,它会产生波纹效果。我正在寻找的是从代码中反复在视图上启动波纹动画。将其显示为不确定的进度。因此,海浪不断荡漾。

就像是

 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)通过传递视图相对(x, y)坐标来控制波纹位置。



 类似资料:
  • 问题内容: 我想将背景设置为。使用XML时没有问题(有效) …但是我必须在Java代码中执行此操作,因此我已经尝试过 …而且它不起作用,实际上我在第二行得到了一个。因此,在尝试了这种变体之后,我认为资源是一种颜色。 这个没有启动异常,但是…不起作用(按下时背景没有变化,但是按下时状态必须改变)…有什么建议吗? 问题答案: 您可以使用这种方式。

  • 波纹效果是一个外部库,主要用于实现 Material Design 中的点击效果。 应用波纹效果 给按钮添加波纹效果,你只要将 waves-effect 类放到按钮中。如果你想这个波纹效果更白,增加 waves-effect waves-light 作为按钮的类。 <a class="waves-effect waves-light btn-large" href="#">Wave</a> 自定

  • 问题内容: 注意1: 此问题与在更新的表视图之外添加UISearchController的搜索栏有关,而不是作为表视图的标题。 注意2: 一些反复试验使我找到了解决方案。 我是iOS开发的新手,正在努力使用UISearchController类。我有一个视图控制器,在我的视图控制器视图中,我计划在表格视图上方有一个搜索栏。我希望搜索栏链接到UISearchController。由于接口生成器没有U

  • 问题内容: 首先,我已经看到了该线程。我尝试了那里给出的可接受的方法。 我的应用程序中有两个屏幕。 第一个有2个EditText,一个是用户名,另一个是密码 第二个有一个ListView和一个EditText-过滤listView 在我的第一个屏幕中,我希望用户名EditText专注于启动,并且Keyboard应该可见。这是我的实现(通过删除不必要的/不相关的代码进行简化)。 app_login.

  • 本文向大家介绍Android实现水波纹效果,包括了Android实现水波纹效果的使用技巧和注意事项,需要的朋友参考一下 一、效果   点击开始:   点击停止: 二、在MainActivity中 三、在activity_main中 四、在WaveView中: 五、在CircleImageView中: 六、在attrs中 以上所述是小编给大家介绍的Android实现水波纹效果,希望对大家有所帮助,如

  • 我的目标是根据用户是否登录显示不同的第一页。登录检查使用同步Ajax调用进行,其结果决定是显示登录对话框还是显示第一个用户页面。 执行此操作的正常方法是设置,然后以编程方式初始化,如本问题的答案中所述。由于某种原因,这不起作用,而是每次都会加载另一个页面。 我决定放弃这种方式,尝试不同的方案。我现在使用一个占位符,空的启动页面,只要登录检查需要,就应该显示该页面。登录检查后,它应该会自动更改。这是