相关疑难解决方法(0)

动画片段之间的过渡

我试图动画片段之间的过渡.我从以下Android片段和动画中得到了答案

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

DetailsFragment newFragment = DetailsFragment.newInstance();

ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");

// Start the animated transition.
ft.commit();
Run Code Online (Sandbox Code Playgroud)

还有我的R.anim.slide_in_left

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="50%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
       <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)

但当我尝试这个时,它表明了

02-08 16:27:37.961: ERROR/AndroidRuntime(1717): FATAL EXCEPTION: main
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): java.lang.RuntimeException: Unknown animator name: translate
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:129)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:126)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:93)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:72)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.FragmentManagerImpl.loadAnimator(FragmentManager.java:621)
02-08 16:27:37.961: …
Run Code Online (Sandbox Code Playgroud)

android android-3.0-honeycomb

273
推荐指数
8
解决办法
28万
查看次数

Android片段和动画

你应该如何实现那种例如Honeycomb Gmail客户端使用的滑动?

可以TransactionManager通过添加和删除片段自动处理这个,由于模拟器是幻灯片,所以很难测试这个:)

android android-fragments android-3.0-honeycomb

260
推荐指数
4
解决办法
23万
查看次数

如何使用非常深的导航编写Android多窗格应用程序

TL; DR: 具有类似Spotify iPad应用程序的深度导航的多窗格应用程序应该如何在Android上运行,以及如何实现这一点?

长版本: 我正在开发一个应用程序,用户可以看到项目列表,然后可以深入研究这些项目.这些项目详细信息页面可以再次打开相关项目的列表,这些项目又包含详细信息页面等.作为一个手机应用程序,这些将是可能看起来像彼此链接的单独活动: 用户单击Overview中的Item#2并获取详细信息页面,然后单击那里的 这里,物品清单是开放的,用户选择看

在模型中,用户看到初始概览,然后从第一个列表中选择"项目#2".将打开一个新活动,向他显示第2项的详细信息.在这里,他选择查看与项目#2相关的事物列表.第三张图片中新开的活动显示了这个列表,点击一个打开了这个东西的详细信息.他可以根据自己的喜好深入浏览内容.

这通常适用于通常的Android活动.我正在努力将应用程序带到平板电脑,并正在考虑如何最好地实现这一点.计划是创建具有相同概念的多窗格布局.它与iPad Spotify应用程序的工作方式非常相似(一旦创建特定于平板电脑的布局,它们将如何将其带入Android会很有趣).

在平板电脑布局中,每次单击项目或列表名称都会打开相应的子项目,作为从右侧激活的新窗格.与上例中相同的工作流程如下所示:

最初的多窗格平板电脑布局 用户选择项目#2,并在右窗格中打开项目详细信息页面 在详细信息页面上,用户选择 点击Thing#3可在右侧窗格中打开事物详细信息

我不确定如何最好地实现这种导航模式.具有有限导航深度的多窗格应用程序(如GMail)可以使用包含所有片段的静态ViewGroup(LinearLayout可以)构建,并且深入导航会将下一个容器的内容替换为右侧,并为此设置动画(请参阅CommonWares在SO)上的实现.

这表明自定义ViewGroup将是最佳选择.如果必须显示一个子页面(即"事物列表"),那么它会在ViewGroup中创建一个新子项,该子项的宽度是屏幕的一半,然后滚动可见区域,以便与之交互的窗格并且新的孩子是可见的.要将此正确链接到FragmentTransaction,以便后端堆栈正常工作,我猜它会是这样的:

View newPane = container.addChild();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(newPane, new ListOfThingsFragment(2));
ft.remove(paneOnRight, fragmentOnRight);
ft.commit();
container.animateToRight();
Run Code Online (Sandbox Code Playgroud)

我没有看到在FragmentTransaction中做动画的方法.

欢迎反馈.我的雇主对我们开发的开放式采购框架总体上是有利的,所以如果这是一个更广泛的兴趣,如果我能提出一个可重用的解决方案,我很乐意分享它.

android android-fragments

11
推荐指数
2
解决办法
7325
查看次数

Is there a way to animate layouts?[Android]?

Here is what i want to do.

Lets say i have a parent linear layout and 3 childs in it.

{ ---------------- ++++++++++++++++ -------------- }

"+"/"-" are the layouts. What i want to do is this:

{------ ++++++++++++++++++++++++++++ -------} //1st step

{ ++++++++++++++++++++++++++++++++++++ } //2nd step..

动画布局"+"接管布局 - .最终的结果是将这3个布局高度"fill_parrent"与权重和Setvisibility设置为"Gone"为" - "布局但动画

layout android

7
推荐指数
1
解决办法
9889
查看次数

Android:在ListView选择后保持蓝色背景

我有一个ListView,它在手机上运行良好.现在我正在创建一个平板电脑用户界面,左边是ListView,右边有详细信息.

当我触摸某个项目时,只要按下它就会闪烁蓝色.我希望保持蓝色,直到选择了另一个项目,就像Nexus 7上的Gmail应用程序一样.

实现这一目标的最简洁方法是什么?我宁愿避免手动设置背景,我认为有一种方法可以将元素标记为"活动"元素并相应地对其进行主题化.

android listview tablet

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

3窗格布局片段动画是口吃

实现信息: 我已经在他自己的问题上发布了CommonsWare响应之后实现了3个窗格布局:Gmail三片段动画场景的完整工作示例?

总的来说,我的布局包括以下级别(1到3):

  1. MainActivity
  2. SlidingMenu(侧面抽屉UI图案)片段隐藏在左侧,而一个ContentFragment片段包含3个窗格布局.
  3. 内部的ContentFragment:LeftListFragment,(每3个TextViews行)MiddleListFragment(每个8个TextViews行), DetailFragment.

LeftListFragmentMiddleListFragment用于CursorLoadersContentProvider每个列表中加载数据.DetailFragment在需要时还要求带有数据的游标.所以我甚至没有实现自定义Adapters(这种方式更好的设计).然后我添加了3个窗格布局+动画.就工作而言,它按预期工作,没有问题.Animation时间是500毫秒.

问题: 动画口吃不多.一些丢帧.当左侧和中间都可见时,我单击中间列表项以打开详细信息; 当我点击"返回"按钮再次查看左侧和中间列表(当没有实际装载时).

我尝试过的:

  1. 删除了加载片段的代码DetailView.我只是点击一个项目,MiddleFragment动画开始,没有任何细节实际加载.仍然口吃.此外,当击中,没有任何负载,它仍然口吃,所以我认为加载器/光标不是这个的原因.
  2. 我使用dumpsys gfxinfo来查看计算每帧的平均时间(以ms为单位).实际上,计算的平均时间是18ms,高于16ms阈值.这是否意味着口吃是因为在制作动画时再次绘制列表所需的时间?如果是这样,为什么?我的意思是......在行视图中我根本没有任何图像.我无法搞砸Adapters代码,因为我没有写过任何代码......
  3. Animation时间从500毫秒减少到200毫秒.如果你仔细观察它仍然是口吃,它只是更快.

编辑:我切换rightPaneWidthleftPaneWidth下面(是的,这删除了重新定尺寸的动画),口吃现在已经消失.列表仍然向左侧滑动,但宽度不会变小.因此,如果现在没有更多的口吃,这是否意味着我的代码中的ObjectAnimator存在问题?

ObjectAnimator.ofInt(this, "middleWidth", rightPaneWidth, leftPaneWidth)
                    .setDuration(ANIM_DURATION).start();
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间 !

3窗格布局代码:

package com.xyz.view.widget;

import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.widget.LinearLayout;


public class …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-fragments objectanimator

4
推荐指数
1
解决办法
5358
查看次数