- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在尝试编写一个将图像旋转到特定角度的 Activity 方法。旋转有效,但问题是该方法大约每秒调用一次,但仅在前几次旋转。在某一时刻,动画图像只是静止不动,即使动画正在设置并以不同的值开始!它应该像前几次那样移动图像。
private void animateNeedle(final float sfAngle)
{
final View viewNeedle = findViewById(R.id.needle);
final RotateAnimation needleAnimation;
RotateAnimation anim;
anim = new RotateAnimation( 0,
sfAngle,
m_nNeedleWidth / 2,
m_nNeedleHeight);
anim.setDuration(200);
anim.setFillAfter(true);
viewNeedle.setAnimation(anim);
anim.setAnimationListener(new AnimationListener()
{
@Override
public void onAnimationEnd(final Animation animation)
{
viewNeedle.clearAnimation();
}
@Override
public void onAnimationRepeat(final Animation animation)
{
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(final Animation animation)
{
// TODO Auto-generated method stub
}
});
anim.start();
findViewById(android.R.id.content).postInvalidate();
}
我做错了什么?我确保该函数在动画期间不会被调用两次,但它没有帮助。
最佳答案
问题是它没有在主线程上运行,为了修复它我们使用了:
anim = new RotateAnimation( m_lastAngle,
sfAngle,
viewNeedle.getWidth() / 2,
viewNeedle.getHeight());
anim.setDuration(1000);
anim.setFillAfter(true);
viewNeedle.setAnimation(anim);
anim.setAnimationListener(new AnimationListener()
{
@Override
public void onAnimationEnd(final Animation animation)
{
// viewNeedle.clearAnimation();
}
@Override
public void onAnimationRepeat(final Animation animation)
{
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(final Animation animation)
{
m_lastAngle = sfAngle;
}
});
runOnUiThread(new Runnable()
{
@Override
public void run()
{
viewNeedle.startAnimation(anim);
findViewById(android.R.id.content).invalidate();
}
});
我们还使用了:
final View viewNeedle = findViewById(R.id.needle);
viewNeedle.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
scaleView(viewNeedle);
}
/**
* Scale a view.
*
* @param viewToScale - View to scale.
*/
private void scaleView(final View viewToScale)
{
int height = (int) (viewToScale.getHeight() / GraphicsPoint
.getScalePoint().y);
int width = (int) (viewToScale.getWidth() / GraphicsPoint
.getScalePoint().x);
final LayoutParams layoutParams = viewToScale
.getLayoutParams();
layoutParams.height = height;
layoutParams.width = width;
viewToScale.setLayoutParams(layoutParams);
viewToScale.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
}
});
关于几次 setAnimation 调用后 Android View 旋转没有发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711419/
您好,我正在使用以下内容: final ImageView ivLoading3 = new ImageView(context); ivLoading3.setBac
我正在开发应用程序,我有一个 Activity,我必须在其中显示一个 TextView。 最初 TextView 是不可见的,但是当我必须让它可见时,我之前设置了一个动画。该动画在 Alcatel O
我今天想检查 iOS 和 Android 的 Lottie lib,我在 after effect 中制作了一个简单的指示器动画并将其导出到 .json 文件,它只适用于 iOS。当我在 Androi
我一直在尝试编写一个将图像旋转到特定角度的 Activity 方法。旋转有效,但问题是该方法大约每秒调用一次,但仅在前几次旋转。在某一时刻,动画图像只是静止不动,即使动画正在设置并以不同的值开始!它应
我基本上想将 View 从一个位置移动到另一个位置,而且我还想逐渐增加它的高度,那么我应该使用 setAnimation 还是 startAnimation。 TranslateAnimation t
我正在尝试使用 Lottie 向我的应用程序添加动画,但出现此错误,我仍然不知道如何解决。 import UIKit import Lottie class ViewController: UIVie
更新了 AirBNB 的 Lottie IOS 的 README.md。 setAnimation 不在自述文件中,也没有在更新版本 3.0.0 的选择器的快速下拉列表中注册 有没有人遇到过这个问题?
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 3 年前。 我有通知菜单图标。我需要在 on
我是一名优秀的程序员,十分优秀!