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

Commit a544d8af authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Optimizing contact list

Instead of inflating the views from XML, we
now create views in Java.  Only necessary views
are created and layout is simplified.

Bug: 2534598
Change-Id: I7881f7519289c74a591c2a47992bbcda84168e4e
parent d8b0a05f
Loading
Loading
Loading
Loading
+0 −91
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright 2009, 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.
 */
-->

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
>
    <include
        android:id="@+id/header"
        layout="@layout/list_section"
    />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:paddingLeft="14dip"
    >

        <include
            android:id="@+id/right_side"
            layout="@layout/contacts_list_item_presence_and_action"
        />

        <TextView android:id="@+id/label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="8dip"
            android:layout_marginTop="-8dip"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textStyle="bold"
        />

        <TextView android:id="@+id/data"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:layout_toRightOf="@id/label"
            android:layout_toLeftOf="@id/right_side"
            android:layout_alignBaseline="@id/label"
            android:layout_alignWithParentIfMissing="true"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceSmall"
        />

        <TextView android:id="@+id/name"
            android:layout_width="0dip"
            android:layout_height="0dip"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="1dip"
            android:layout_toLeftOf="@id/right_side"
            android:layout_alignParentTop="true"
            android:layout_above="@id/label"
            android:layout_alignWithParentIfMissing="true"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:gravity="center_vertical|left"
            android:textAppearance="?android:attr/textAppearanceLarge"
        />
    </RelativeLayout>

    <View android:id="@+id/list_divider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@*android:drawable/divider_horizontal_dark_opaque"
    />
</LinearLayout>
+0 −105
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright 2009, 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.
 */
-->

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
>
    <include
        android:id="@+id/header"
        layout="@layout/list_section"
    />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:paddingLeft="4dip"
    >

        <include
            android:id="@+id/right_side"
            layout="@layout/contacts_list_item_presence_and_action"
        />

        <android.widget.QuickContactBadge android:id="@+id/photo"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dip"
            style="?android:attr/quickContactBadgeStyleWindowMedium"
        />

        <ImageView android:id="@+id/noQuickContactPhoto"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dip"
            android:background="@null"
            style="?android:attr/quickContactBadgeStyleWindowMedium"
        />

        <TextView android:id="@+id/label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/photo"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="8dip"
            android:layout_marginTop="-10dip"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textStyle="bold"
        />

        <TextView android:id="@+id/data"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:layout_toRightOf="@id/label"
            android:layout_toLeftOf="@id/right_side"
            android:layout_alignBaseline="@id/label"
            android:layout_alignWithParentIfMissing="true"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceSmall"
        />

        <TextView android:id="@+id/name"
            android:layout_width="0dip"
            android:layout_height="0dip"
            android:layout_toRightOf="@id/photo"
            android:layout_toLeftOf="@id/right_side"
            android:layout_alignParentTop="true"
            android:layout_above="@id/label"
            android:layout_alignWithParentIfMissing="true"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:gravity="center_vertical|left"
            android:textAppearance="?android:attr/textAppearanceLarge"
        />
    </RelativeLayout>

    <View android:id="@+id/list_divider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@*android:drawable/divider_horizontal_dark_opaque"
    />
</LinearLayout>
+0 −127
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright 2009, 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.
 */
-->

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
>
    <include
        android:id="@+id/header"
        layout="@layout/list_section"
    />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:paddingLeft="4dip"
    >

        <include
            android:id="@+id/right_side"
            layout="@layout/contacts_list_item_presence_and_action"
        />

        <android.widget.QuickContactBadge android:id="@+id/photo"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dip"
            style="?android:attr/quickContactBadgeStyleWindowMedium"
        />

        <ImageView android:id="@+id/noQuickContactPhoto"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dip"
            android:background="@null"
            style="?android:attr/quickContactBadgeStyleWindowMedium"
        />

        <TextView android:id="@+id/label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/photo"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="3dip"
            android:layout_marginTop="-7dip"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textStyle="bold"
        />

        <TextView android:id="@+id/data"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:layout_toRightOf="@id/label"
            android:layout_toLeftOf="@id/right_side"
            android:layout_alignBaseline="@id/label"
            android:layout_alignWithParentIfMissing="true"

            android:singleLine="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceSmall"
        />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/photo"
            android:layout_toLeftOf="@id/right_side"
            android:layout_above="@id/label"
            android:layout_alignParentTop="true"
            android:layout_alignWithParentIfMissing="true"
            android:gravity="center_vertical|left"
            >

            <TextView android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"

                android:singleLine="true"
                android:ellipsize="marquee"
                android:textAppearance="?android:attr/textAppearanceLarge"
            />

            <TextView android:id="@+id/snippet"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/name"
                android:layout_alignWithParentIfMissing="true"
                android:layout_marginTop="-5dip"
                android:layout_marginBottom="3dip"

                android:singleLine="true"
                android:ellipsize="marquee"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textStyle="bold"
                
            />
        </RelativeLayout>
    </RelativeLayout>

    <View android:id="@+id/list_divider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@*android:drawable/divider_horizontal_dark_opaque"
    />
</LinearLayout>
+0 −64
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright 2010, 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.
 */
-->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_marginLeft="11dip"
    android:layout_alignParentRight="true">

    <ImageView android:id="@+id/presence"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:layout_marginRight="5dip"
        android:padding="7dip"
        android:layout_gravity="center_vertical"
        android:scaleType="centerInside"
    />

    <LinearLayout android:id="@+id/call_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <View android:id="@+id/divider"
            android:layout_width="1px"
            android:layout_height="match_parent"
            android:layout_marginTop="5dip"
            android:layout_marginBottom="5dip"
            android:background="@drawable/divider_vertical_dark"
        />

        <view
            class="com.android.contacts.ui.widget.DontPressWithParentImageView"
            android:id="@+id/call_button"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="14dip"
            android:paddingRight="14dip"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:src="@android:drawable/sym_action_call"
            android:background="@drawable/call_background"
        />

    </LinearLayout>
</LinearLayout>
+12 −0
Original line number Diff line number Diff line
@@ -27,4 +27,16 @@
    
    <dimen name="contact_shortcut_frame_width">50dip</dimen>    
    <dimen name="contact_shortcut_frame_height">56dip</dimen>    
    
    <!-- Dimensions for a list item -->
    <dimen name="list_item_padding_top">4dip</dimen>    
    <dimen name="list_item_padding_right">11dip</dimen>    
    <dimen name="list_item_padding_bottom">4dip</dimen>    
    <dimen name="list_item_padding_left">4dip</dimen>    
    <dimen name="list_item_gap_between_image_and_text">8dip</dimen>    
    <dimen name="list_item_gap_between_label_and_data">5dip</dimen>    
    <dimen name="list_item_call_button_padding">14dip</dimen>    
    <dimen name="list_item_vertical_divider_margin">5dip</dimen>    
    <dimen name="list_item_presence_icon_margin">5dip</dimen>    
    <dimen name="list_item_header_text_width">56dip</dimen>    
</resources>
Loading