зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1066253 - Part 2: Put favicons in the tab strip. r=lucasr
This commit is contained in:
Родитель
bba35c63d0
Коммит
2cdbf1cd8e
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 242 B |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 148 B |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 282 B |
Двоичные данные
mobile/android/base/resources/drawable-large-xxhdpi-v11/favicon_none.png
Normal file
Двоичные данные
mobile/android/base/resources/drawable-large-xxhdpi-v11/favicon_none.png
Normal file
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 470 B |
|
@ -10,7 +10,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:paddingTop="8dp"/>
|
||||
android:paddingTop="8dp"
|
||||
android:paddingLeft="2dp"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/add_tab"
|
||||
|
@ -20,4 +21,4 @@
|
|||
android:contentDescription="@string/new_tab"
|
||||
android:background="@drawable/action_bar_button_inverse"/>
|
||||
|
||||
</merge>
|
||||
</merge>
|
||||
|
|
|
@ -10,5 +10,5 @@
|
|||
android:layout_width="@dimen/new_tablet_tab_strip_item_width"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/new_tablet_tab_strip_item_bg"
|
||||
android:paddingLeft="28dp"
|
||||
android:paddingLeft="25dp"
|
||||
android:paddingRight="15dp"/>
|
||||
|
|
|
@ -5,6 +5,14 @@
|
|||
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/favicon"
|
||||
android:layout_width="@dimen/tab_strip_favicon_size"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginRight="9dp"
|
||||
android:scaleType="centerInside"
|
||||
android:duplicateParentState="true"/>
|
||||
|
||||
<org.mozilla.gecko.widget.ThemedTextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dip"
|
||||
|
|
|
@ -10,4 +10,6 @@
|
|||
<dimen name="tabs_counter_size">26sp</dimen>
|
||||
<dimen name="panel_grid_view_column_width">200dp</dimen>
|
||||
|
||||
<dimen name="tab_strip_favicon_size">16dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -98,6 +98,7 @@ public class TabStrip extends ThemedLinearLayout {
|
|||
case UNSELECTED:
|
||||
// We just need to update the style for the unselected tab...
|
||||
case TITLE:
|
||||
case FAVICON:
|
||||
case RECORDING_CHANGE:
|
||||
tabStripView.updateTab(tab);
|
||||
break;
|
||||
|
|
|
@ -5,7 +5,15 @@
|
|||
|
||||
package org.mozilla.gecko.tabs;
|
||||
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.Tab;
|
||||
import org.mozilla.gecko.Tabs;
|
||||
import org.mozilla.gecko.widget.ThemedImageButton;
|
||||
import org.mozilla.gecko.widget.ThemedLinearLayout;
|
||||
import org.mozilla.gecko.widget.ThemedTextView;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Path;
|
||||
|
@ -17,16 +25,11 @@ import android.view.LayoutInflater;
|
|||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.Checkable;
|
||||
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.Tab;
|
||||
import org.mozilla.gecko.Tabs;
|
||||
import org.mozilla.gecko.widget.ThemedImageButton;
|
||||
import org.mozilla.gecko.widget.ThemedLinearLayout;
|
||||
import org.mozilla.gecko.widget.ThemedTextView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
public class TabStripItemView extends ThemedLinearLayout
|
||||
implements Checkable {
|
||||
@SuppressWarnings("unused")
|
||||
private static final String LOGTAG = "GeckoTabStripItem";
|
||||
|
||||
private static final int[] STATE_CHECKED = {
|
||||
|
@ -36,6 +39,7 @@ public class TabStripItemView extends ThemedLinearLayout
|
|||
private int id = -1;
|
||||
private boolean checked;
|
||||
|
||||
private final ImageView faviconView;
|
||||
private final ThemedTextView titleView;
|
||||
private final ThemedImageButton closeView;
|
||||
|
||||
|
@ -44,6 +48,9 @@ public class TabStripItemView extends ThemedLinearLayout
|
|||
private final Region tabRegion;
|
||||
private final Region tabClipRegion;
|
||||
|
||||
private final int faviconSize;
|
||||
private Bitmap lastFavicon;
|
||||
|
||||
public TabStripItemView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
|
@ -62,6 +69,8 @@ public class TabStripItemView extends ThemedLinearLayout
|
|||
tabPaint.setStrokeWidth(0.0f);
|
||||
tabPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
|
||||
|
||||
faviconSize = getResources().getDimensionPixelSize(R.dimen.tab_strip_favicon_size);
|
||||
|
||||
LayoutInflater.from(context).inflate(R.layout.tab_strip_item_view, this);
|
||||
setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
@ -74,6 +83,7 @@ public class TabStripItemView extends ThemedLinearLayout
|
|||
}
|
||||
});
|
||||
|
||||
faviconView = (ImageView) findViewById(R.id.favicon);
|
||||
titleView = (ThemedTextView) findViewById(R.id.title);
|
||||
|
||||
closeView = (ThemedImageButton) findViewById(R.id.close);
|
||||
|
@ -187,7 +197,25 @@ public class TabStripItemView extends ThemedLinearLayout
|
|||
}
|
||||
|
||||
id = tab.getId();
|
||||
updateFavicon(tab.getFavicon());
|
||||
titleView.setText(tab.getDisplayTitle());
|
||||
setPrivateMode(tab.isPrivate());
|
||||
}
|
||||
|
||||
private void updateFavicon(final Bitmap favicon) {
|
||||
if (favicon == null) {
|
||||
lastFavicon = null;
|
||||
faviconView.setImageResource(R.drawable.favicon_none);
|
||||
return;
|
||||
} else if (favicon == lastFavicon) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Cache the original so we can debounce without scaling.
|
||||
lastFavicon = favicon;
|
||||
|
||||
final Bitmap scaledFavicon =
|
||||
Bitmap.createScaledBitmap(favicon, faviconSize, faviconSize, false);
|
||||
faviconView.setImageBitmap(scaledFavicon);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче