mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Bug 698095 - Tab count increment/decrement needs animation [r=mfinkle]
This commit is contained in:
parent
2209f5357f
commit
ccc76e8771
@ -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) {
|
||||
|
@ -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 \
|
||||
|
7
embedding/android/resources/drawable/tabs_level.xml
Normal file
7
embedding/android/resources/drawable/tabs_level.xml
Normal 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 |
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user