标签: android-animation

如何在Android中提供自上而下的动画?

当我进入下一个活动时,我能够给出自下而上的动画,但现在当我按下时,我使用相同的代码从上到下动画制作动画,但它总是自下而上,所以我的问题是如何给动画我在Android设备上按下按钮时从上到下?
请在下面找到我的代码.

我使用它在从一个过渡Activity到另一个过程中使用它Intent.

overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up );
Run Code Online (Sandbox Code Playgroud)

和xml是:slide_in_up.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime"/>
Run Code Online (Sandbox Code Playgroud)

和slide_out_up.xml是

 <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="-100%p"
android:duration="@android:integer/config_longAnimTime"/>
Run Code Online (Sandbox Code Playgroud)

android android-animation android-transitions

16
推荐指数
3
解决办法
4万
查看次数

Android动画闪烁

我一直在搜索关于这个主题的线索,我可以在Android 2.2处理AnimationListeners时出现的闪烁中找到,但我无法解决我的问题.

我得到的是一个LinearLayout'popover',用户触摸向下移动大约100个像素,然后再触摸它以将其向上移动.我终于让它在没有任何闪烁的第一部分上工作(感谢建议在动画视图上调用clearAnimation()),但是当做相反的操作时(即,将视图向上移动),有一个闪烁开始.我无法在onAnimationStart()方法中调用clearAnimation(),因为它不会动画!

当然,如果我使用setFillAfter()而没有任何动画监听器,所有动画都能完美地工作,但是视图的触摸区域不会移动(因为视图本身没有"实际"移动).

任何帮助将不胜感激.

this.popoverTab.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        popoverTab.setClickable(false);
        popoverTab.setFocusable(false);
        if (popoverHidden) {
            Log.d(TAG, "About to show popover");
            // the popover is currently hidden, show it.
            TranslateAnimation animation = new TranslateAnimation(0, 0, 100, 0);
            animation.setDuration(700);
            animation.setFillBefore(true);
            animation.setAnimationListener(new AnimationListener() {
                public void onAnimationEnd(Animation animation) {

                }

                public void onAnimationRepeat(Animation animation) {

                }

                public void onAnimationStart(Animation animation) {
                    footer.layout(footer.getLeft(), (footer.getTop() - 100), footer.getRight(), footer.getBottom());
                }
            });
            footer.startAnimation(animation);
        } else {
            Log.d(TAG, "About to hide popover");
            // the …
Run Code Online (Sandbox Code Playgroud)

android android-animation

16
推荐指数
3
解决办法
2万
查看次数

在LinearLayout中更改LayoutParams的动画

在我的应用程序中有一个LinearLayout,其布局高度为0.当我单击按钮时,此布局高度应为LayoutParams.WRAP_CONTENT.这是我在onclicklistner中使用的代码.

LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
slider.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)

我想动画这个.如何将动画设置为滑块.

android android-animation android-layout layoutparams

16
推荐指数
2
解决办法
2万
查看次数

使用动态位图设置在Android上实现KenBurns效果

背景

我正在动作栏上实现" KenBurns效果 "(演示在这里),如图书馆的样本所示(移动的图标除外,我自己就是这样做的).

事实上,我甚至在很久以前(这里)问过这个问题,在这一点上我甚至都不知道它的名字.我确信我找到了解决方案,但它有一些问题.

此外,因为我有时从设备显示图像,有的甚至需要旋转,所以我用一个rotatableDrawable(如图所示这里).

问题

当前实现无法处理动态给出的多个位图(例如,来自Internet),甚至不能查看输入图像的大小.

相反,它只是以随机方式进行缩放和平移,因此很多时候它可以缩放太多/很少,并且可以显示空白空间.

代码

这是与问题相关的代码:

private float pickScale() {
    return MIN_SCALE_FACTOR + this.random.nextFloat() * (MAX_SCALE_FACTOR - MIN_SCALE_FACTOR);
}

private float pickTranslation(final int value, final float ratio) {
    return value * (ratio - 1.0f) * (this.random.nextFloat() - 0.5f);
}

public void animate(final ImageView view) {
    final float fromScale = pickScale();
    final float toScale = pickScale();
    final float fromTranslationX = pickTranslation(view.getWidth(), fromScale);
    final float fromTranslationY = pickTranslation(view.getHeight(), fromScale); …
Run Code Online (Sandbox Code Playgroud)

animation android image-manipulation android-animation android-kenburnsview

16
推荐指数
1
解决办法
7084
查看次数

窗口动画重叠Android 5.0上的导航栏

我正在使用自定义子类在我的应用程序中实现Material Design 底部工作表设计模式Dialog.对话框被吸引到屏幕的底部并使用y-translation窗口输入动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/decelerate_cubic">
    <translate android:fromYDelta="100%"
        android:toYDelta="0"
        android:duration="250" />
</set>
Run Code Online (Sandbox Code Playgroud)

在早期版本的Android,这看起来不错(如果我这样说我自己):对话顺利地从屏幕的底部,并从滑入的导航栏.

但是,在最新的5.0预览图像上,窗口动画发生在导航栏的顶部,因此对话框内容暂时与导航重叠.在这个特殊的用例中,它看起来很丑陋,很奇怪并且令人分心.

我可以在主题或代码中设置什么来防止这种情况发生?

android navigationbar android-animation translate-animation

16
推荐指数
1
解决办法
1785
查看次数

FragmentTransaction.replace()淡入过渡显示"ghost"片段

您可以下载我的整个项目来尝试和调试.这是我的整个代码的回购:https://bitbucket.org/lexic92/studio48/


当我尝试用空白片段替换空白片段时,我在转换中出现了"鬼片段".

如何重现问题: 我有一个导航抽屉,当我点击一个项目时,它会打开一个填满整个屏幕的片段.

导航抽屉:

  • 按钮1 - 带文本的片段
  • 按钮2 - 空的片段

    1. 当我打开应用程序时,它会从包含文本的片段开始.然后,我打开导航抽屉并单击按钮2. 转换不良,瞬间变为空白屏幕,然后切换回淡入淡出的文本,直到它变为空白屏幕.

    2. 如果我打开导航抽屉并再次单击按钮2 ,它将从全文淡出到空白屏幕.因此,对于一个瞬间,它会在不应该的情况下显示带有文本的片段.我一步一步地在调试模式下运行我的应用程序,以减慢速度,并验证这种行为确实发生了.

    3. 如果我第三次打开导航抽屉并再次单击按钮2 ,它正确地不会显示任何动画,因为它正在淡入同一个屏幕.

有谁知道为什么会这样?你认为它与导航抽屉有什么关系吗?

这是我的整个代码的回购: https ://bitbucket.org/lexic92/studio48/

以下是一些代码摘录:

SongDetailActivity.java:

      @Override
      public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
        FragmentManager fragmentManager = getSupportFragmentManager();

        //OPEN THE BLANK SCREEN
        if(position == 1) {
            fragmentManager.beginTransaction()
                    //.setCustomAnimations(R.anim.fade_in, R.anim.fade_out)
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
                    .replace(R.id.songlist_detail_container, PlaceholderFragment.newInstance(position + 1, mSongId))
                    .commit();
        }
        //OPEN THE SCREEN WITH TEXT
        else {
            SongDetailFragment …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-fragments android-transitions

16
推荐指数
1
解决办法
5746
查看次数

线性布局的选框效果

我正在尝试对布局实现选框效果,以帮助它从右侧内侧向左侧内侧滚动/动画,就像自动收报机视图一样.

从以下两个链接中,您可以获得更多知识,就像股票市场通过以循环常量方式显示值来更新用户一样.

1)http://www.sify.com/finance/livemarkets/

2)http://terminal.moneycontrol.com/index.php?wl=indices

为此,我已经实现了下面的代码,使其有些类似.

public class HorizonalSlideActivity extends Activity
{
    private LinearLayout horizontalOuterLayout;
    private HorizontalScrollView horizontalScrollview;
    private int scrollMax;
    private int scrollPos = 0;
    private TimerTask scrollerSchedule;
    private Timer scrollTimer = null;
    private ScrollAdapter adapter = null;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.horizontal_layout);

        adapter = new ScrollAdapter(HorizonalSlideActivity.this);

        horizontalScrollview = (HorizontalScrollView) findViewById(R.id.horiztonal_scrollview_id);
        horizontalScrollview.setOnTouchListener(new OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                return false;
            }
        });
        horizontalOuterLayout = (LinearLayout) findViewById(R.id.horiztonal_outer_layout_id);
        horizontalTextView = (TextView) findViewById(R.id.horizontal_textview_id);
        horizontalScrollview.setHorizontalScrollBarEnabled(false); …
Run Code Online (Sandbox Code Playgroud)

android marquee horizontalscrollview android-animation android-linearlayout

16
推荐指数
2
解决办法
2994
查看次数

退出转换前更新源活动

在此输入图像描述

我需要有关活动之间转换的帮助:

我有两个活动A和B,两个都有一个具有相同图像列表的ViewPager.每个页面都有与一个ImageView的transitionName等于image_x其中X是页面的索引.

A启动活动B调用ActivityOptionsCompat.makeSceneTransitionAnimation,输入转换完全正常.

问题如下:当我关闭活动B时,退出转换不会在B的相同位置初始化活动A的视图寻呼机.

当用户关闭B时,后者在结果中设置当前页面位置.在onActivityResult活动A中,我调用了setCurrentItem,并且行为显示在gif中.

有没有办法在退出转换开始之前更新活动A?

android android-animation android-viewpager android-transitions

16
推荐指数
1
解决办法
846
查看次数

如何知道一项活动是否在没有过渡的情况下开始?

我有一个用例,我主要通过转换开始一个活动,但从导航抽屉打开它时不是这种情况.

为了保持过渡顺利,我有一个Transition.TransitionListener在转换完成时触发一些UI更新.

所以我有这样的事情:

public class SomeActivity extends Activity {

    public void onCreate(Bundle savedInstanceState){ 
        // ...
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
            sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
                // ...
                @Override
                public void onTransitionEnd(Transition transition) {
                    doSomeUiUpdating();
                }
            });
        } else { // Pre-Lollipop
            doSomeUiUpdating();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种运作良好,开始与动漫活动的时候,但我怎么能知道,如果活动未经过渡开始,这样我可以打电话doSomeUiUpdating()

我敢肯定,必须有一个简单的方法Activity,Window,Transition或地方,我都忽略了.我不想在调用Activity上中继设置一些告诉动画是否显示的包.

android android-animation android-transitions

16
推荐指数
1
解决办法
1700
查看次数

如何在RecyclerView的列表边框外添加项目透明度?

RecyclerView项目超出列表边界时,如何使项目顺利消失?见下图.所有可能的解决方案高度赞

在此输入图像描述

注意:具有渐变背景(阴影模仿)的View上面的解决方案RecyclerView不能很好地工作,因为我在屏幕上有渐变背景,很难将"阴影"视图背景与屏幕背景相匹配,它看起来像这样:在此输入图像描述

所以,像阴影一样的工作不像消失.

更新:获得第二个屏幕,背景如下:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <gradient
        android:type="linear"
        android:startColor="#FF14141d"
        android:endColor="#0014141d"
        android:angle="270"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

这是原始屏幕背景

在此输入图像描述

android android-animation android-layout android-recyclerview

16
推荐指数
1
解决办法
2010
查看次数