Bug 698095 - Tab count increment/decrement needs animation [r=mfinkle]

This commit is contained in:
Sriram Ramasubramanian 2011-11-11 11:26:57 -08:00
parent 7ca2f84d72
commit 6b4cc94d97
5 changed files with 87 additions and 7 deletions

View File

@ -41,25 +41,45 @@
package org.mozilla.gecko;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.animation.TranslateAnimation;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextSwitcher;
import android.widget.ViewSwitcher.ViewFactory;
public class BrowserToolbar extends LinearLayout {
final private Button mAwesomeBar;
final private ImageButton mTabs;
final public ImageButton mFavicon;
final private AnimationDrawable mProgressSpinner;
final private TextSwitcher mTabsCount;
final private Context mContext;
final private Handler mHandler;
final private TranslateAnimation mSlideUpIn;
final private TranslateAnimation mSlideUpOut;
final private TranslateAnimation mSlideDownIn;
final private TranslateAnimation mSlideDownOut;
private int mCount;
public BrowserToolbar(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
// Load layout into the custom view
LayoutInflater inflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@ -82,9 +102,35 @@ public class BrowserToolbar extends LinearLayout {
addTab();
}
});
mTabs.setImageLevel(1);
mTabsCount = (TextSwitcher) findViewById(R.id.tabs_count);
mTabsCount.setFactory(new ViewFactory() {
public View makeView() {
TextView text = new TextView(mContext);
text.setGravity(Gravity.CENTER);
text.setTextSize(20);
text.setTextColor(Color.WHITE);
text.setTypeface(text.getTypeface(), Typeface.BOLD);
return text;
}
});
mCount = 0;
mTabsCount.setText("0");
mFavicon = (ImageButton) findViewById(R.id.favicon);
mProgressSpinner = (AnimationDrawable) context.getResources().getDrawable(R.drawable.progress_spinner);
mHandler = new Handler();
mSlideUpIn = new TranslateAnimation(0, 0, 100, 0);
mSlideUpOut = new TranslateAnimation(0, 0, 0, -100);
mSlideDownIn = new TranslateAnimation(0, 0, -100, 0);
mSlideDownOut = new TranslateAnimation(0, 0, 0, 100);
mSlideUpIn.setDuration(750);
mSlideUpOut.setDuration(750);
mSlideDownIn.setDuration(750);
mSlideDownOut.setDuration(750);
}
private void onAwesomeBarSearch() {
@ -100,10 +146,27 @@ public class BrowserToolbar extends LinearLayout {
}
public void updateTabs(int count) {
if (count == 1)
mTabs.setImageResource(R.drawable.tabs_plus);
else
mTabs.setImageResource(R.drawable.tabs_menu);
if (mCount > count) {
mTabsCount.setInAnimation(mSlideDownIn);
mTabsCount.setOutAnimation(mSlideDownOut);
} else if (mCount < count) {
mTabsCount.setInAnimation(mSlideUpIn);
mTabsCount.setOutAnimation(mSlideUpOut);
}
mTabs.setImageLevel(0);
mTabsCount.setVisibility(View.VISIBLE);
mTabsCount.setText(String.valueOf(count));
mCount = count;
mHandler.postDelayed(new Runnable() {
public void run() {
if (Tabs.getInstance().getCount() == 1) {
mTabs.setImageLevel(1);
mTabsCount.setVisibility(View.GONE);
}
}
}, 1500);
}
public void setProgressVisibility(boolean visible) {

View File

@ -309,11 +309,11 @@ MOZ_ANDROID_DRAWABLES += embedding/android/resources/drawable/address_bar_bg.xml
embedding/android/resources/drawable/tab_new.png \
embedding/android/resources/drawable/tab_close.png \
embedding/android/resources/drawable/tabs_button.xml \
embedding/android/resources/drawable/tabs_level.xml \
embedding/android/resources/drawable/tabs_normal.png \
embedding/android/resources/drawable/tabs_pressed.png \
embedding/android/resources/drawable/tabs_off.png \
embedding/android/resources/drawable/tabs_plus.png \
embedding/android/resources/drawable/tabs_menu.png \
embedding/android/resources/drawable/tabs_tray_bg.9.png \
embedding/android/resources/drawable/checkerboard.png \
embedding/android/resources/drawable/shadow.png \

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@android:color/transparent"/>
<item android:maxLevel="1" android:drawable="@drawable/tabs_plus"/>
</level-list>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 571 B

View File

@ -25,10 +25,20 @@
android:layout_alignParentLeft="true"
android:background="@drawable/tabs_button"
android:gravity="center_vertical|left"
android:src="@drawable/tabs_plus"
android:src="@drawable/tabs_level"
android:paddingLeft="12dip"
android:paddingRight="38dip"/>
<TextSwitcher android:id="@+id/tabs_count"
style="@style/AddressBar.ImageButton"
android:layout_width="42dip"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:gravity="center_horizontal"
android:visibility="gone"/>
<ImageButton android:id="@+id/favicon"
style="@style/AddressBar.ImageButton"
android:layout_width="24dip"