我需要在我的应用程序中为图像添加动画.图像应从左上角开始直到屏幕中间.初始阶段的图像尺寸会变小.当到达屏幕中间时,它的大小应该增加(即应该进行缩放).图像不应该回到原来的位置.它应该在动画之后放置在屏幕中间.
谁能请帮忙.
我有一个奇怪的问题AlphaAnimation.它应该在AsyncTask调用处理程序时重复运行.
但是,第一次调用处理程序时Activity,除非我触摸屏幕或更新UI(例如按下手机的菜单按钮),否则动画将无法启动.
奇怪的是,一旦动画至少运行一次,如果再次调用处理程序,它将毫无问题地启动.
这是代码的样子:
// AsyncTask handler
public void onNetworkEvent()
{
this.runOnUiThread(new Runnable() {
@Override
public void run()
{
flashScreen(Animation.INFINITE);
}
});
}
// Called method
private void flashScreen(int repeatCount)
{
final View flashView = this.findViewById(R.id.mainMenuFlashView);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(repeatCount);
alphaAnimation.setRepeatMode(Animation.RESTART);
alphaAnimation.setDuration(300);
alphaAnimation.setInterpolator(new DecelerateInterpolator());
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation)
{
flashView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation)
{
flashView.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试在任务完成时动画一些东西.这里的问题是我收到此错误消息:
android.util.AndroidRuntimeException: Animators may only be run on Looper threads
at android.animation.ValueAnimator.cancel(ValueAnimator.java:1004)
at android.view.ViewPropertyAnimator.animatePropertyBy(ViewPropertyAnimator.java:965)
at android.view.ViewPropertyAnimator.animateProperty(ViewPropertyAnimator.java:921)
at android.view.ViewPropertyAnimator.alpha(ViewPropertyAnimator.java:735)
at com.design.zaton.prototypei.MainActivity$1$1.run(MainActivity.java:93)
at java.lang.Thread.run(Thread.java:761)
Run Code Online (Sandbox Code Playgroud)
该应用程序使用相同的确切代码工作正常,但现在它根本没有.我真的很困惑.
这是错误发生的地方:
new Thread(new Runnable() {
@Override
public void run() {
final String s = getGiphyViews(String.valueOf(mEdit.getText()));
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(s);
}
});
loading.animate()
.alpha(0)
.setDuration(100);
done.animate()
.scaleY(1)
.scaleX(1)
.setDuration(300);
}
}).start();
Run Code Online (Sandbox Code Playgroud)
该错误概述了该loading.animate()方法.
提前致谢!
在我的应用程序中,我使用底部工作表(来自支持库),它非常有用.现在,我想在拖动工作表时设置布局更改动画.为此,我创建了一个子类BottomSheetCallback(这通常是片段的内部类,所以不是这个calss中使用的所有对象都在这里初始化):
public class MyBehavior extends BottomSheetBehavior.BottomSheetCallback {
Transition transition;
float lastOffset = 0;
Scene scene;
public PlayerBehavior() {
TransitionInflater inflater = TransitionInflater.from(getContext());
transition = inflater.inflateTransition(R.transition.player);
//transition.setDuration(300);
scene = fullLayout;
transition.setInterpolator(new Interpolator() {
@Override
public float getInterpolation(float v) {
return lastOffset;
}
});
}
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if(newState == BottomSheetBehavior.STATE_DRAGGING) {
TransitionManager.go(scene, transition);
}
}
@Override
public void onSlide(View bottomSheet, final float slideOffset) {
scene = (slideOffset > lastOffset) ? smallLayout : fullLayout; …Run Code Online (Sandbox Code Playgroud) 我正在制作Android应用程序而且我有一件棘手的事情要做.我需要在画布上绘制一条路径,但绘图应该是动画的(即,稍微延迟后逐点绘制).
是否可以使用Android SDK制作这样的东西?如果没有,我怎么能产生这种效果?
使用此代码我只有淡入淡出,我正在寻找如何添加淡出.我添加了另一个名为"fadeout"的xml,但我无法将其集成到我的代码中.
ImageView imageView = (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
imageView.startAnimation(fadeInAnimation);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
imageView.startAnimation(fadeInAnimation);
}
}
Run Code Online (Sandbox Code Playgroud)
fadein.xml
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="Your Duration(in milisecond)"
android:repeatCount="infinite"/>
</set>
Run Code Online (Sandbox Code Playgroud) 在我的布局XML文件中:
<LinearLayout
...
animateLayoutChanges="true"
... />
Run Code Online (Sandbox Code Playgroud)
当我添加和a View和这个布局并删除它时,我可以看到淡入和淡出效果.但是,我只需要淡出效果.谁能告诉我应该怎么做?
我正在编写一个Android应用程序,我希望通过从屏幕底部到顶部的动画来显示活动.我可以使用此处的代码执行此操作:
但是,我无法执行反之亦然动画,其中Activity将通过从屏幕的顶部滑动到底部而消失.
我使用了上面链接中的代码; 通过向上滑动显示活动,但当消失时,它会淡出,而不是滑到底部.
我甚至尝试将代码放入onCreate():
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
overridePendingTransition(R.anim.appear_from_bottom, R.anim.disappear_to_bottom);
setContentView(R.layout.activity_all_metadata_display);
initializePage();
}
Run Code Online (Sandbox Code Playgroud) 我已将我的SDK更新到最新版本,但现在我收到了一个lint错误.
错误:animator类型的预期资源[ResourceType]
此行发生错误:
AnimatorInflater.loadAnimator(context, R.anim.right_slide_in)
Run Code Online (Sandbox Code Playgroud)
引用的资源/res/anim/right_slide_in.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:valueTo="0"
android:valueFrom="1.0"
android:propertyName="xFraction"
android:valueType="floatType"
android:duration="450" />
Run Code Online (Sandbox Code Playgroud)
它以前总是奏效.有人可以解释为什么我会收到这个错误吗?
我正在尝试使用该Animator集顺序播放一组动画.除了alpha动画(set1)之外,一切正常.它从0.25f变为1但在整个动画中并没有消失,在动画结束时set1它从0.25变为1而没有考虑到setDuration(因此我没有得到淡入效果).所以我没有淡出效果......当我自己做这个动画时,淡入效果就在那里......任何想法?
我正在使用精彩的nineoldandroids库来实现这一点.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView image = (ImageView) findViewById(R.id.image);
final AnimatorSet set = new AnimatorSet();
set.play(ObjectAnimator.ofFloat(image, "translationX", 0, 100).setDuration(3000));
final AnimatorSet set1 = new AnimatorSet();
//THIS IS THE PROBLEMATIC ANIMATION!!
set1.play(ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1).setDuration(3000));
final AnimatorSet set2 = new AnimatorSet();
set2.play(ObjectAnimator.ofFloat(image, "translationX", 100, 200).setDuration(3000));
final AnimatorSet set3 = new AnimatorSet();
set3.playSequentially(set,set1,set2);
set3.start();
}
Run Code Online (Sandbox Code Playgroud)