Articles of android animation

使用animation更改布局的权重

在我的主布局文件中,我有一个RelativeLayout,权重为1(基本上显示一个地图)在LinearLayout上方,权重为2,这样声明: DownLayout包含一个项目列表,当我点击一个项目时,我想将DownLayout的权重更改为4,因此上部布局(地图)仅占屏幕的1/5而不是1/3。 我设法通过更改LayoutParams来实现: LinearLayout linearLayout = (LinearLayout) mActivity.findViewById(R.id.DownLayout); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); params.weight = 4.0f; linearLayout.setLayoutParams(params); 它有效,但我不满意,变化太直接,没有过渡,而我希望它是顺利的。 有没有办法使用animation? 我发现了一些使用ObjectAnimator来改变weightSum的例子,但它并不想要我想要的(如果我只更改了这个属性,我在我的向下布局下面有一些空闲空间): float ws = mLinearLayout.getWeightSum(); ObjectAnimator anim = ObjectAnimator.ofFloat(mLinearLayout, “weightSum”, ws, 5.0f); anim.setDuration(3000); anim.addUpdateListener(this); anim.start(); 有没有办法使用ObjectAnimator(或其他东西)来做到这一点? 谢谢 !

Android用淡入/淡出animation改变背景图像

我编写的代码可以每5秒随机更改一次背景图像。现在我想使用淡入/淡出animation来改变背景图像,但我不知道如何使用这个animation。 这是我的来源: void handlechange() { Handler hand = new Handler(); hand.postDelayed(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // change image here change(); } private void change() { // TODO Auto-generated method stub Random rand = new Random(); int index = rand.nextInt(image_rundow.length); mapimg.setBackgroundResource(image_rundow[index]); handlechange(); } }, 4000); } 一切都很好。 我可以随机更改背景图像,但我不知道如何使用animation淡入/淡出。 […]

设置FloatingActionButton纹波

我试图将FloatingActionButton纹波设置为类似于此的东西 从材料设计。 问题是我只得到一个没有波纹的“平面样式”,它只是将按钮从我的情况下改变为白色到橙色而没有上面链接中显示的animation。 我在这里听到了答案: 带支持库的FloatingActionButton示例 但我的FAB仍然很无聊! 编辑:我目前的代码是:XML: Java的: mAddToWatchListFAB.setRippleColor(ContextCompat.getColor(this, R.color.orange_6)); 我在FAB上尝试了这种方法,但似乎没有用。 我也尝试了我提供的链接中的步骤

如何在布局中制作从右到左的animation

我参与了从右到左的问题。 我通过单击按钮上的“隐藏”和“可见”布局创建它。 但是现在我想要一个animation,这样当我点击按钮时,会发生“从右到左”的animation,当我再次点击按钮时,相同的布局将是“从左到右”的animation,并作为幻灯片布局。 码 final RelativeLayout rightlayout = (RelativeLayout) findViewById(R.id.relativelayout2); rightlayout.setVisibility(View.GONE); Button rightbtn = (Button) findViewById(R.id.righttoleft); rightbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println(“clickecd”); if(keyright == 0) { //rightlayout.setVisibility(View.VISIBLE); keyright++; slideToLeft(rightlayout); } else { //rightlayout.setVisibility(View.GONE); TranslateAnimation animate = new TranslateAnimation(0,rightlayout.getWidth(),0,0); animate.setDuration(1000); animate.setFillAfter(true); rightlayout.startAnimation(animate); keyright–; } } }); // To animate view slide out […]

汉堡菜单旋转到新活动的箭头

我注意到,随着Android的最新Gmail更新,当您点击其中一封电子邮件时,会打开一个新的活动(我假设它不是片段,因为后面的箭头)。 但是,新活动的后退箭头不会像默认情况那样显示。 主界面中的汉堡菜单旋转成animation中的箭头 (请参阅此处的video: http : //material-design.storage.googleapis.com/publish/material_v_3/material_ext_publish/0B3T7oTWa3HiFbFRfT196SWRyS2s/animation_delightfuldetails_wellcrafted.webm ) (注意:新打开的电子邮件可能是一个片段,因为工具栏没有更改,默认的新活动animation也没有播放。我不确定它是哪一个。) 澄清:我知道如何让汉堡菜单在按下/打开导航抽屉时变成箭头。 事实上,我故意禁用所说的animation,因为它违反了规范。 (参见这篇文章: http : //www.androidpolice.com/2014/10/30/google-turns-design-inconsistency-ten-latest-round-navigation-drawers/ )。 但是,我想知道, 在创建新的片段/活动时 ,无论Gmail可能使用哪一个, 都可以使用相同的animation 。

如何在android中防止设备轮换的冲突animation?

我有一个活动的两个按钮对象这个对象有一些animation与ObjectAnimator这些animation工作完美,但当animation在背景中运行时我想旋转设备有时在ObjectAnimator中纵向模式坐标以横向模式或反向运行。 ObjectAnimator move_next_btn = ObjectAnimator.ofFloat(next_btn, “x”, next_btn.getX(), next_btn.getX() + next_btn.getWidth()); 在上面的代码中,按钮应该离开屏幕但是在此行之后,如果设备旋转到横向模式按钮进入中间屏幕,我认为当出现此问题时,纵向坐标在横向模式下运行。 我给出了更多细节: 这是我的图片查看器,当用户没有触摸屏幕按钮时,侧面有两个按钮,animation出现在屏幕外: 第二个图像显示其中一个箭头是隐藏(也许)我认为这是因为当animation想要运行时我旋转屏幕并且箭头保持在屏幕外: 在第三张图像中,当animation以纵向模式运行时,我旋转到横向模式,箭头停留在屏幕的中央,当然,如果再次旋转到横向箭头,则此图像将进入纵向模式: 这恰好发生在移动animation(int代码上方)和屏幕旋转同时运行时并不总是如此。 完整代码: private void init() { index = getIntent().getIntExtra(“index”, 0); current_index = getIntent().getIntExtra(“current_index”, 0); final View previous_btn_rl = findViewById(R.id.previous_btn_rl); findViewById(R.id.previous_btn_rl).findViewById(R.id.previous_btn) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { time_to_hide_button = 3; try { AssetManager assetManager = getAssets(); if (current_index […]

折叠CardViewanimation无法正常工作

我想做什么 我有一个RecyclerView ,其中包含许多基本上属于CardView 。 这些卡片在他们的身体中间有一个支持文本,默认情况下可见性设置为GONE ,当我点击卡片右侧的箭头时,它变得可见。 我试图在文本显示的同时对卡进行animation处理,然后它就会崩溃。 下图显示了扩展卡和折叠卡: CardView布局(为了便于阅读,我删除了一些部分): 问题 当卡片展开并显示正文TextView ,animation正在工作,但是,当我尝试将其折叠回来时,animation下方的卡片与第一张卡片重叠。 例: 到目前为止我尝试过的 我之前已经在这里问了一个关于这种行为的类似问题 ,但是该解决方案不适用于卡片中间的TextView 。 负责animation部分的代码位于RecyclerView适配器内。 箭头有一个点击监听器,可以调用以下方法: private fun toggleVisibility() { if (bodyContent.visibility == View.GONE || bodyContent.visibility == View.INVISIBLE) { btSeeMore.animate().rotation(180f).start() TransitionManager.beginDelayedTransition(root, AutoTransition()) bodyContent.visibility = View.VISIBLE } else { btSeeMore.animate().rotation(0f).start() TransitionManager.beginDelayedTransition(root, AutoTransition()) bodyContent.visibility = View.GONE } } root是我的CardView 。 我也尝试使用LinearLayout而不是卡本身进行延迟转换,但这也不起作用。 如何为我的布局实现这种行为?

Android线程等到可见

我已经制作了一个自定义饼图视图,我希望在饼图可见时启动animation。 目前我所拥有的是饼图animation,但是当你在屏幕上实际看到它时,animation已经结束了一半。 这就是我所拥有的: public class SinglePieChart extends SurfaceView implements SurfaceHolder.Callback { // Chart setting variables private int emptyCircleCol, strokeColor, number, total; // Paint for drawing custom view private Paint circlePaint; private RectF rect; private Context context; private AnimThread animThread; private SurfaceHolder holder; // animation variables private float speed; private float current = 0.0f; private boolean […]

如何在Android中单击Button时显示Page Curl Animation

我在我的应用程序中使用Page curlanimation。 代码可以在这里find: https : //github.com/harism/android_page_curl/ 。 该代码工作正常,但我想在其中进行一些修改。 1.在没有背景的情况下全屏显示图像。 我想在点击按钮时显示这个curlanimation。 邮件CurlActvity类的代码是http://pastebin.com/ZLzP6Zxt 。 如果有人对我必须在哪里修改代码有一些想法,那么请帮助我。 任何帮助表示赞赏。 编辑:第一个问题通过private class SizeChangedObserver中的一些修改解决了在没有背景的情况下全屏显示图像的问题。 唯一的问题是设置animationonClick按钮。

在Android中查看animation在LinearLayout中折叠/展开视图

我动态地将图像视图添加到我的线性布局中, 我想实现 这是我所做的示例代码 主要活动 package ksp.com.animationssample; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { private Button btn_expand; private Button btn_collapse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_expand = (Button) findViewById(R.id.btn_expand); btn_collapse = (Button) findViewById(R.id.btn_collapse); LinearLayout.LayoutParams vp = […]