本文主要是介绍揭露动画实现时的注意事项(附上bug-logcat),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Debug完成图:
昨天晚上开始学一下这个揭露动画,准备用在项目中做一个转场,啃完了API之后开始写个小demo,距离跑成功一步之遥的当儿,出了个bug,就怎么点击按钮都没用。
首先上bug图:
bug:怎么点击按钮都没用,每点击一次都会出现下面的报错(2040):
11-07 19:20:49.665 2454-2454/? I/Finsky: [1] com.google.android.finsky.services.j.a(149): Installation state replication succeeded.
11-07 19:20:49.711 7448-7448/? E/hei: 2040
11-07 19:20:49.718 1350-1371/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 5613338 , only wrote 5613120
11-07 19:20:50.376 7448-7448/? E/hei: 2040
11-07 19:20:50.992 7448-7448/? E/hei: 2040
11-07 19:20:51.591 7448-7448/? E/hei: 2040
11-07 19:20:54.790 1350-1372/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 6098164 , only wrote 5856480
11-07 19:20:58.322 7448-7448/? E/hei: 2040
11-07 19:20:58.328 1350-1371/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 5856667 , only wrote 5856480
11-07 19:21:01.540 1350-1372/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 6162708 , only wrote 6010560
activity.java全文:
package com.lwp.justtest;import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewAnimationUtils;public class MainActivity extends AppCompatActivity implements View.OnClickListener {boolean flag = false;FloatingActionButton fab;private View mPuppet;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mPuppet = findViewById(R.id.view_puppet);fab = (FloatingActionButton)findViewById(R.id.fab);fab.setOnClickListener(this);}@Overridepublic void onClick(View v) {doRevealAnimation();}private void doRevealAnimation() {int[] vLocation = new int[2];fab.getLocationInWindow(vLocation);int centerX = vLocation[0] + fab.getMeasuredWidth() / 2;int centerY = vLocation[1] + fab.getMeasuredHeight() / 2;int height = mPuppet.getHeight();int width = mPuppet.getWidth();int maxRradius = (int) Math.hypot(height, width);Log.e("hei", maxRradius + "");if (flag) {Animator animator = ViewAnimationUtils.createCircularReveal(mPuppet, centerX, centerY, maxRradius, 0);animator.setDuration(1000);animator.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationEnd(Animator animation) {super.onAnimationEnd(animation);mPuppet.setVisibility(View.GONE);}});animator.start();flag = false;} else {Animator animator = ViewAnimationUtils.createCircularReveal(mPuppet, centerX, centerY, 0, maxRradius);animator.setDuration(1000);animator.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {mPuppet.setVisibility(View.VISIBLE);}@Overridepublic void onAnimationEnd(Animator animation) {}@Overridepublic void onAnimationCancel(Animator animation) {}@Overridepublic void onAnimationRepeat(Animator animation) {}});animator.start();flag = true;}}}
layout.xml全文:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"tools:context="com.lwp.justtest.MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"android:layout_gravity="center"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Viewandroid:id="@+id/view_puppet"android:layout_width="match_parent"android:layout_height="match_parent"/><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|end"android:layout_margin="16dp"android:backgroundTint="@color/colorPrimary"android:src="@drawable/map"app:pressedTranslationZ="10dp" /></FrameLayout>
观众朋友们,这个看出毛病了吗。
我想了一下,额,会不会我的View没有设置颜色啊。。好的试了一下,果然是,可以说是很鬼畜了。。
layout.xml里边的View控件改成下面这样子,再次运行程序就成了(发现2040还是会报错,但是动画算是完美跑出来了,所以小伙伴们这里记得设置android:background
以及android:visibility
噢):
<Viewandroid:id="@+id/view_puppet"android:background="@color/colorPrimaryDark"android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="gone"/>
效果图如下:
这篇关于揭露动画实现时的注意事项(附上bug-logcat)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!