Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 967cffda authored by Gary Mai's avatar Gary Mai
Browse files

Change initial load animation of main list

Make each row slide up and fade in

Bug: 30318643

Change-Id: Ie05352a92142cbfb15c942896abf8d479f4e915d
parent b5ebbfa0
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2016 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:interpolator/linear_out_slow_in">
    <alpha
        android:duration="@integer/lists_on_load_animation_duration"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"/>
    <translate
        android:duration="@integer/lists_on_load_animation_duration"
        android:fromYDelta="5%"
        android:toYDelta="0"/>
</set>
+18 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2016 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
                 android:animation="@anim/slide_and_fade_in"
                 android:delay="10%"/>
+1 −4
Original line number Diff line number Diff line
@@ -348,6 +348,7 @@ public class PeopleActivity extends ContactsDrawerActivity implements

        if (mAllFragment == null) {
            mAllFragment = new DefaultContactBrowseListFragment();
            mAllFragment.setAnimateOnLoad(true);
            transaction.add(R.id.tab_pager, mAllFragment, ALL_TAG);
        }

@@ -775,10 +776,6 @@ public class PeopleActivity extends ContactsDrawerActivity implements
                mCurTransaction = mFragmentManager.beginTransaction();
            }
            Fragment f = getFragment(position);
            if (!mIsRecreatedInstance && (f instanceof DefaultContactBrowseListFragment)) {
                mCurTransaction.setCustomAnimations(android.R.animator.fade_in,
                        android.R.animator.fade_out);
            }
            mCurTransaction.show(f);

            // Non primary pages are not visible.
+51 −12
Original line number Diff line number Diff line
@@ -16,18 +16,6 @@

package com.android.contacts.list;

import com.android.contacts.R;
import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.MultiSelectEntryContactListAdapter;
import com.android.contacts.common.list.MultiSelectEntryContactListAdapter.SelectedContactsListener;
import com.android.contacts.common.logging.ListEvent.ActionType;
import com.android.contacts.common.logging.Logger;
import com.android.contacts.common.logging.SearchState;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.model.account.GoogleAccountType;

import android.content.Context;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
@@ -35,13 +23,28 @@ import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.view.ViewCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.TextView;

import com.android.contacts.R;
import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.MultiSelectEntryContactListAdapter;
import com.android.contacts.common.list.MultiSelectEntryContactListAdapter.SelectedContactsListener;
import com.android.contacts.common.logging.ListEvent.ActionType;
import com.android.contacts.common.logging.Logger;
import com.android.contacts.common.logging.SearchState;
import com.android.contacts.common.model.AccountTypeManager;
import com.android.contacts.common.model.account.AccountType;
import com.android.contacts.common.model.account.AccountWithDataSet;
import com.android.contacts.common.model.account.GoogleAccountType;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
@@ -54,6 +57,7 @@ public abstract class MultiSelectContactsListFragment<T extends MultiSelectEntry
        extends ContactEntryListFragment<T>
        implements SelectedContactsListener {

    protected boolean mAnimateOnLoad;
    private static final String TAG = "MultiContactsList";

    public interface OnCheckBoxListActionListener {
@@ -89,11 +93,25 @@ public abstract class MultiSelectContactsListFragment<T extends MultiSelectEntry
        mSearchResultClicked = false;
    }

    public void setAnimateOnLoad(boolean shouldAnimate) {
        mAnimateOnLoad = shouldAnimate;
    }

    @Override
    public void onSelectedContactsChanged() {
        if (mCheckBoxListListener != null) mCheckBoxListListener.onSelectedContactIdsChanged();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        if (savedInstanceState == null && mAnimateOnLoad) {
            setLayoutAnimation(getListView(), R.anim.slide_and_fade_in_layout_animation);
        }
        return getView();
    }

    @Override
    public void onSelectedContactsChangedViaCheckBox() {
        if (getAdapter().getSelectedContactIds().size() == 0) {
@@ -283,6 +301,27 @@ public abstract class MultiSelectContactsListFragment<T extends MultiSelectEntry
        return searchState;
    }

    protected void setLayoutAnimation(final ViewGroup view, int animationId) {
        if (view == null) {
            return;
        }
        view.setLayoutAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                view.setLayoutAnimation(null);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
            }
        });
        view.setLayoutAnimation(AnimationUtils.loadLayoutAnimation(getActivity(), animationId));
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
            int totalItemCount) {