相关疑难解决方法(0)

RecyclerView:Animate项目调整大小

我有一个RecyclerView.回收者视图的每个项目都可以扩展或不扩展.只能同时扩展一个项目.

本质上,我正在尝试在lolipop dialier中重新创建历史列表.

我发现在RecyclerView上使用LayoutTransition 使它崩溃.

但我无法正确设置两个状态之间项目视图更改的动画.

我曾尝试getItemAnimator().setSupportsChangeAnimations(true)过,notifyItemChanged(getPosition())但有两个问题:

  • 视图被重新创建,使得过渡非常奇怪,因为它在项目移动的同时在下一个项目上方淡入.出现的新视图不是调整大小,它已经是完整大小.
  • 当视图重新创建时,旧视图淡出而新视图淡入,这使视图背景颜色闪烁.

我还尝试LayoutTransition在动画的持续时间内设置项目视图,但这种方法的问题是RecycleView的布局立即更新而不跟随动画.

我为这两个尝试创建了一个关于这个问题的小型演示项目. 项目来源在这里.

如何在项目布局更改中创建平滑过渡?

android layouttransition android-recyclerview

19
推荐指数
1
解决办法
1万
查看次数

在共享元素活动过渡中动画嵌套视图时出现故障?

我一直在搞乱Android 5.0中的新API,并且一直试图弄清楚是否有可能ViewGroup活动转换期间将a 和它的一个子项分别作为共享元素动画.

下面的屏幕截图给出了我想要实现的简化示例:

First Activity初始职位 第二活动最终职位

在第一个活动中,深灰色框是ViewGroup屏幕中心,红色框是其子框View(我在这里可以找到我使用的布局XML代码).当用户点击深灰色框时,深灰色框应逐渐向上扩展以填充第二个活动的背景.同时,红色框应逐渐缩放并重新定位在第二个活动的左上角.

活动和动画代码

Activity我用来执行转换的代码很简单:

/** FirstActivity.java */
public class FirstActivity extends Activity implements View.OnClickListener {
    private View mOuterBox, mInnerBox;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
        getWindow().setSharedElementExitTransition(new ChangeBounds());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        mOuterBox = findViewById(R.id.outer_box);
        mInnerBox = findViewById(R.id.inner_box);
        mOuterBox.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Pair<View, String> outerBox = Pair.create(mOuterBox, mOuterBox.getTransitionName());
        Pair<View, String> innerBox = Pair.create(mInnerBox, mInnerBox.getTransitionName());
        Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this, outerBox, innerBox).toBundle();
        startActivity(new Intent(this, …
Run Code Online (Sandbox Code Playgroud)

android android-5.0-lollipop activity-transition shared-element-transition

10
推荐指数
1
解决办法
4167
查看次数