为 Pre-Lollipop 设备创建 Circular Reveal
Create Circular Reveal for Pre-Lollipop Devices
首先,这不是同一个问题
我正在使用那里提到的库来创建 Circular Reveal,但它似乎对我不起作用。
XML
<io.codetail.widget.RevealFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/circBack"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff4081"
android:visibility="invisible"
></FrameLayout>
</io.codetail.widget.RevealFrameLayout>
JAVA
View myView = findViewById(R.id.circBack);
// get the center for the clipping circle
int cx = (myView.getLeft() + myView.getRight()) / 2;
int cy = (myView.getTop() + myView.getBottom()) / 2;
// get the final radius for the clipping circle
int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
SupportAnimator animator = ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(1000);
myView.setVisibility(View.VISIBLE);
animator.start();
圆形显示没有显示。我的意思是代码执行时没有任何反应。
Logcat显示这个
07-01 19:15:47.498 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealRadius>
07-01 19:15:47.498 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealRadius>
07-01 19:15:47.498 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealRadius>
07-01 19:15:47.501 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.ViewAnimationUtils$SimpleAnimationListener>
07-01 19:15:47.501 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.ViewAnimationUtils$SimpleAnimationListener>
07-01 19:15:47.502 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedGingerbread>
07-01 19:15:47.502 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedGingerbread>
07-01 19:15:47.502 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedIceCreamSandwich>
07-01 19:15:47.503 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedIceCreamSandwich>
07-01 19:15:47.503 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedJellyBeanMr2>
07-01 19:15:47.503 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedJellyBeanMr2>
然而,如果视图在 XML 文件中设置为可见,则圆形显示确实有效,但问题是如果我将视图“circBack”设置为在 XML 中可见,它从应用程序启动的那一刻开始显示,这很正常。
这个问题有什么解决办法吗?
看起来您正在 "Gone" 视图上初始化此动画?
尝试获取视图的可见性并确保 运行 它在
内
if (mView.getVisibility() == View.VISIBLE)
{
..
..
anim.start();
}
代码块。
好吧,这可能是 Gradle 依赖项的问题,因为当我以这种方式添加库时它起作用了,
错误的方式
dependencies {
compile ('com.github.ozodrukh:CircularReveal:2.0.1@aar') {
transitive = true;
}
}
正道
dependencies {
compile 'com.github.ozodrukh:CircularReveal:2.0.1'
}
抱歉回答晚了。希望对有需要的人有所帮助。
首先,这不是同一个问题
我正在使用那里提到的库来创建 Circular Reveal,但它似乎对我不起作用。
XML
<io.codetail.widget.RevealFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/circBack"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff4081"
android:visibility="invisible"
></FrameLayout>
</io.codetail.widget.RevealFrameLayout>
JAVA
View myView = findViewById(R.id.circBack);
// get the center for the clipping circle
int cx = (myView.getLeft() + myView.getRight()) / 2;
int cy = (myView.getTop() + myView.getBottom()) / 2;
// get the final radius for the clipping circle
int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
SupportAnimator animator = ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(1000);
myView.setVisibility(View.VISIBLE);
animator.start();
圆形显示没有显示。我的意思是代码执行时没有任何反应。
Logcat显示这个
07-01 19:15:47.498 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealRadius>
07-01 19:15:47.498 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealRadius>
07-01 19:15:47.498 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealRadius>
07-01 19:15:47.501 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.ViewAnimationUtils$SimpleAnimationListener>
07-01 19:15:47.501 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.ViewAnimationUtils$SimpleAnimationListener>
07-01 19:15:47.502 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedGingerbread>
07-01 19:15:47.502 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedGingerbread>
07-01 19:15:47.502 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedIceCreamSandwich>
07-01 19:15:47.503 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedIceCreamSandwich>
07-01 19:15:47.503 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedJellyBeanMr2>
07-01 19:15:47.503 27556-27556/com.ledo.ledoapp I/art﹕ Rejecting re-init on previously-failed class java.lang.Class<io.codetail.animation.RevealAnimator$RevealFinishedJellyBeanMr2>
然而,如果视图在 XML 文件中设置为可见,则圆形显示确实有效,但问题是如果我将视图“circBack”设置为在 XML 中可见,它从应用程序启动的那一刻开始显示,这很正常。
这个问题有什么解决办法吗?
看起来您正在 "Gone" 视图上初始化此动画?
尝试获取视图的可见性并确保 运行 它在
内if (mView.getVisibility() == View.VISIBLE)
{
..
..
anim.start();
}
代码块。
好吧,这可能是 Gradle 依赖项的问题,因为当我以这种方式添加库时它起作用了,
错误的方式
dependencies {
compile ('com.github.ozodrukh:CircularReveal:2.0.1@aar') {
transitive = true;
}
}
正道
dependencies {
compile 'com.github.ozodrukh:CircularReveal:2.0.1'
}
抱歉回答晚了。希望对有需要的人有所帮助。