- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Android 项目,用户可以在其中扫描 RFID 标签。标签会在一定秒数后过期,以便在另一个标签进入之前清理系统,基本上是为了避免错误地处理同一标签两次。为了可视化此超时,我希望显示标签 ID 的按钮背景具有动画效果。基本上我希望在标签刚刚被扫描时整个按钮充满颜色,并随着时间的推移慢慢缩小到中间。
到目前为止我发现了什么:我发现this answer他们在那里谈论属性 api。我可以看到它与渐变一起工作,但不幸的是,关于渐变的文档很少,而且看起来并不那么容易做到这一点。
我还认为也许您可以通过某种方式在按钮下方分层相同大小的另一个 View 并对其进行缩放来实现此目的。但老实说,我认为这很难一致地做到,特别是在计时器处理和配置更改时调整 View 大小。话又说回来,我对 Android 并没有那么丰富的经验,几乎所有的事情都使用线性和网格布局,因为它们是最容易理解的。
我真正需要的是某种方法,将背景按一个值(总时间与剩余时间之间的比率)向中间“缩放”,就像我在这里演示的那样。或者一种本质上具有硬颜色渐变的方法,其中渐变的白色部分随着时间的推移向中间移动。
我认为可能有效的最后一个解决方案是拥有一个可绘制的动画 vector 并操纵与其关联的对象动画器以强制其以正确的速度播放。然而,这个解决方案可能相当困惑,我还没有尝试过有人有一个干净的解决方案来解决这个问题吗?
注意:我在这个项目中使用 java。我没有包含代码 fragment ,因为我认为不需要它们。如果您需要一些 fragment ,请直接询问,我会提供。我的 minSdkVersion 是 25,因为该作业的目标设备是 android 7.1,无法更新到较新的版本。
最佳答案
这是一个示例布局,其中有两个进度条和一个 TextView :
<?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">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:progressBackgroundTint="@color/transparent"
android:rotation="180"
android:scaleY="4"
app:layout_constraintBottom_toBottomOf="@id/textView2"
app:layout_constraintEnd_toStartOf="@+id/progressBar2"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/textView2"
tools:progress="100" />
<ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:progressBackgroundTint="@color/transparent"
android:scaleY="4"
app:layout_constraintBottom_toBottomOf="@id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/progressBar"
app:layout_constraintTop_toTopOf="@id/textView2"
tools:progress="100" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:text="TextView"
android:textAlignment="center"
android:textColor="@color/black"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
以下是将进度设置为 100、50 和 1 时获得的结果:
100:
50:
1:
如果您添加自定义可绘制对象作为背景,您可以使进度条相应地填充空间并使其颜色为红色。
请注意,照片中的灰线来 self 在 Android Studio 中的设计选项卡,除了调试时之外不可见。
更新:这是使进度条在 5 秒内从 100% 重置为 0% 的动画代码。
ProgressBar pb = findViewById(R.id.progressBar); ProgressBar pb2 = findViewById(R.id.progressBar2);
ObjectAnimator animation = ObjectAnimator.ofInt(pb, "progress", 0, 100);
animation.setDuration(5000);
animation.setInterpolator(new DecelerateInterpolator());
animation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) { }
@Override
public void onAnimationEnd(Animator animator) {
//do something when the countdown is complete
}
@Override
public void onAnimationCancel(Animator animator) { }
@Override
public void onAnimationRepeat(Animator animator) { }
});
animation.start();
AnimatorSet set = new AnimatorSet();
set.playTogether(ObjectAnimator.ofInt(pb, "progress", 100, 0),
ObjectAnimator.ofInt(pb2, "progress", 100, 0));
set.setDuration(5000);
set.start();
关于java - 动画按钮背景以反射(reflect)剩余时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229298/
一、反射 1.定义 Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法(即使是私有的);对于任意一个对象,都能够调用它的任意方法和属性,那么,我
有没有办法从 JavaScript 对象内部获取所有方法(私有(private)、特权或公共(public))?这是示例对象: var Test = function() { // private m
我有一个抽象类“A”,类“B”和“C”扩展了 A。我想在运行时根据某些变量创建这些实例。如下所示: public abstract class A { public abstract int
假设我们在内存中有很多对象。每个都有一个不同的ID。如何迭代内存以找到与某些 id 进行比较的特定对象?为了通过 getattr 获取并使用它? 最佳答案 您应该维护这些对象的集合,因为它们是在类属性
假设我有这个结构和一个方法: package main import ( "fmt" "reflect" ) type MyStruct struct { } func (a *MyS
C#反射简介 反射(Reflection)是C#语言中一种非常有用的机制,它可以在运行时动态获取对象的类型信息并且进行相应的操作。 反射是一种在.NET Framework中广
概述 反射(Reflection)机制是指在运行时动态地获取类的信息以及操作类的成员(字段、方法、构造函数等)的能力。通过反射,我们可以在编译时期未知具体类型的情况下,通过运行时的动态
先来看一段魔法吧 public class Test { private static void changeStrValue(String str, char[] value) {
结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套; go中的struct类型理解为类,可以定义方法,和函数定义有些许区别; struct类型是值类型
反射 1. 反射的定义 Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们
反射的定义 java的反射(reflection) 机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到嘛,那么,我们就可以
我有一个 Java POJO: public class Event { private String id; private String name; private Lon
我编写了以下函数来检查给定的单例类是否实现了特征。 /** Given a singleton class, returns singleton object if cls implements T.
我正在研究 Java 反射的基础知识并观察有关类方法的信息。我需要获得一个符合 getMethod() 函数描述的规范的方法。然而,当我这样做时,我得到了一个 NoSuchMethodExceptio
我正在通过以下代码检索 IEnumerable 属性列表: BindingFlags bindingFlag = BindingFlags.Instance | BindingFlags.Public
我需要检查属性是否在其伙伴类中定义了特定属性: [MetadataType(typeof(Metadata))] public sealed partial class Address { p
我正在尝试使用 Reflections(由 org.reflections 提供)来处理一些繁重的工作,因此我不需要在很长的时间内为每个类手动创建一个实例列表。但是,Reflections 并未按照我
scala 反射 API (2.10) 是否提供更简单的方法来搜索加载的类并将列表过滤到实现定义特征的特定类? IE; trait Widget { def turn(): Int } class
我想在运行时使用反射来查找具有给定注释的所有类,但是我不知道如何在 Scala 中这样做。然后我想获取注释的值并动态实例化每个映射到关联注释值的带注释类的实例。 这是我想要做的: package pr
这超出了我的头脑,有人可以更好地向我解释吗? http://mathworld.wolfram.com/Reflection.html 我正在制作一个 2d 突破格斗游戏,所以我需要球能够在它击中墙壁
我是一名优秀的程序员,十分优秀!