Correct colored status bar implementation for Lollipop, updated status bar colors in some activities to be darker than toolbar color (e.g. tag editor), added elevation to some views, etc. Getting KitKat support again for this colored UI will also come back soon with SystemBarTInt.

This commit is contained in:
Aidan Follestad 2015-04-18 00:47:57 -05:00
commit 3028b96634
22 changed files with 323 additions and 193 deletions

View file

@ -56,15 +56,15 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
private Album album;
private ObservableRecyclerView recyclerView;
private View statusBar;
private ImageView albumArtImageView;
private View songsBackgroundView;
private TextView albumTitleView;
private Toolbar toolbar;
private int headerOffset;
private int titleViewHeight;
private int albumArtViewHeight;
private int toolbarColor;
public Toolbar toolbar;
private final SmallObservableScrollViewCallbacks observableScrollViewCallbacks = new SmallObservableScrollViewCallbacks() {
@Override
public void onScrollChanged(int scrollY, boolean b, boolean b2) {
@ -81,7 +81,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
// Change alpha of overlay
float alpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
ViewUtil.setBackgroundAlpha(toolbar, alpha, toolbarColor);
ViewUtil.setBackgroundAlpha(statusBar, alpha, toolbarColor);
// Translate name text
int maxTitleTranslationY = albumArtViewHeight;
@ -121,8 +120,11 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
initViews();
setUpObservableListViewParams();
setUpToolBar();
setUpViews();
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
@ -141,12 +143,11 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
}
private void initViews() {
albumArtImageView = (ImageView) findViewById(R.id.album_art);
toolbar = (Toolbar) findViewById(R.id.toolbar);
albumArtImageView = (ImageView) findViewById(R.id.album_art);
recyclerView = (ObservableRecyclerView) findViewById(R.id.list);
albumTitleView = (TextView) findViewById(R.id.album_title);
songsBackgroundView = findViewById(R.id.list_background);
statusBar = findViewById(R.id.statusBar);
}
private void setUpObservableListViewParams() {
@ -155,7 +156,8 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
int toolbarHeight = Util.getActionBarSize(this);
titleViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height);
headerOffset = toolbarHeight;
headerOffset += getResources().getDimensionPixelSize(R.dimen.statusMargin);
if (Util.hasKitKatSDK() && !Util.hasLollipopSDK())
headerOffset += getResources().getDimensionPixelSize(R.dimen.statusMargin);
}
private void setUpViews() {
@ -239,12 +241,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
});
}
private void setUpToolBar() {
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setUpSongsAdapter() {
final ArrayList<Song> songs = AlbumSongLoader.getAlbumSongList(this, album.id, new SongTrackNumberComparator());
final AlbumSongAdapter albumSongAdapter = new AlbumSongAdapter(this, songs);

View file

@ -65,15 +65,14 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
private Artist artist;
private ObservableListView songListView;
private View statusBar;
private ImageView artistImage;
private View songsBackgroundView;
private TextView artistNameTv;
private Toolbar toolbar;
private int headerOffset;
private int titleViewHeight;
private int artistImageViewHeight;
private int toolbarColor;
public Toolbar toolbar;
private View songListHeader;
private RecyclerView albumRecyclerView;
@ -95,7 +94,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
// Change alpha of overlay
float alpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
ViewUtil.setBackgroundAlpha(toolbar, alpha, toolbarColor);
ViewUtil.setBackgroundAlpha(statusBar, alpha, toolbarColor);
// Translate name text
int maxTitleTranslationY = artistImageViewHeight;
@ -110,7 +108,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
}
};
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -148,12 +145,11 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
}
private void initViews() {
artistImage = (ImageView) findViewById(R.id.artist_image);
toolbar = (Toolbar) findViewById(R.id.toolbar);
artistImage = (ImageView) findViewById(R.id.artist_image);
songListView = (ObservableListView) findViewById(R.id.list);
artistNameTv = (TextView) findViewById(R.id.artist_name);
songsBackgroundView = findViewById(R.id.list_background);
statusBar = findViewById(R.id.statusBar);
songListHeader = LayoutInflater.from(this).inflate(R.layout.artist_detail_header, songListView, false);
albumRecyclerView = (RecyclerView) songListHeader.findViewById(R.id.recycler_view);
@ -165,7 +161,8 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
int toolbarHeight = Util.getActionBarSize(this);
titleViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height);
headerOffset = toolbarHeight;
headerOffset += getResources().getDimensionPixelSize(R.dimen.statusMargin);
if (Util.hasKitKatSDK() && !Util.hasLollipopSDK())
headerOffset += getResources().getDimensionPixelSize(R.dimen.statusMargin);
}
@Override

View file

@ -17,12 +17,14 @@ import android.support.v7.internal.view.menu.MenuPopupHelper;
import android.support.v7.widget.ActionMenuPresenter;
import android.support.v7.widget.ActionMenuView;
import android.support.v7.widget.Toolbar;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.FrameLayout;
import com.afollestad.materialdialogs.ThemeSingleton;
import com.astuetz.PagerSlidingTabStrip;
@ -62,11 +64,12 @@ public class MainActivity extends AbsFabActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks, KabViewsDisableAble {
public static final String TAG = MainActivity.class.getSimpleName();
private static final boolean DEBUG = true;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
private NavigationDrawerFragment navigationDrawerFragment;
private Toolbar toolbar;
private View statusBar;
private PagerAdapter pagerAdapter;
private ViewPager viewPager;
private PagerSlidingTabStrip slidingTabLayout;
@ -149,7 +152,6 @@ public class MainActivity extends AbsFabActivity
private void setUpToolBar() {
setTitle(getResources().getString(R.string.app_name));
toolbar = (Toolbar) findViewById(R.id.toolbar);
statusBar = findViewById(R.id.statusBar);
setToolBarTransparent(PreferenceUtils.getInstance(this).transparentToolbar());
setSupportActionBar(toolbar);
setUpDrawerToggle();
@ -159,7 +161,6 @@ public class MainActivity extends AbsFabActivity
float alpha = transparent ? 0.97f : 1f;
final int colorPrimary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
ViewUtil.setBackgroundAlpha(toolbar, alpha, colorPrimary);
ViewUtil.setBackgroundAlpha(statusBar, alpha, colorPrimary);
ViewUtil.setBackgroundAlpha(slidingTabLayout, alpha, colorPrimary);
}
@ -170,6 +171,20 @@ public class MainActivity extends AbsFabActivity
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
);
drawerLayout.setStatusBarBackgroundColor(PreferenceUtils
.getInstance(this).getThemeColorPrimaryDarker());
FrameLayout navDrawerFrame = (FrameLayout) findViewById(R.id.nav_drawer_frame);
int navDrawerMargin = getResources().getDimensionPixelSize(R.dimen.nav_drawer_margin);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int navDrawerWidthLimit = getResources().getDimensionPixelSize(R.dimen.nav_drawer_width_limit);
int navDrawerWidth = displayMetrics.widthPixels - navDrawerMargin;
if (navDrawerWidth > navDrawerWidthLimit) {
navDrawerWidth = navDrawerWidthLimit;
}
navDrawerFrame.setLayoutParams(new DrawerLayout.LayoutParams(navDrawerWidth,
DrawerLayout.LayoutParams.MATCH_PARENT, Gravity.START));
drawerLayout.post(new Runnable() {
@Override
public void run() {
@ -537,4 +552,4 @@ public class MainActivity extends AbsFabActivity
});
return super.onMenuOpened(featureId, menu);
}
}
}

View file

@ -76,7 +76,10 @@ public abstract class ThemeBaseActivity extends ActionBarActivity implements Kab
protected void setUpTranslucence(boolean statusBarTranslucent, boolean navigationBarTranslucent) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Util.setStatusBarTranslucent(getWindow(), statusBarTranslucent);
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// Not needed on Lollipop
Util.setStatusBarTranslucent(getWindow(), statusBarTranslucent);
}
if (Util.isInPortraitMode(this) || Util.isTablet(this)) {
Util.setNavBarTranslucent(getWindow(), navigationBarTranslucent);
} else {

View file

@ -296,7 +296,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
paletteColorPrimary = vibrantColor;
observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(vibrantColor);
getWindow().setStatusBarColor(ColorChooserDialog.shiftColorDown(vibrantColor));
getWindow().setNavigationBarColor(vibrantColor);
}
}

View file

@ -16,13 +16,15 @@ public abstract class AbsMainActivityFragment extends Fragment implements KabVie
private boolean areViewsEnabled;
protected int getTopPadding() {
if (Util.hasKitKatSDK()) {
final int norm = Util.getActionBarSize(getActivity()) +
getResources().getDimensionPixelSize(R.dimen.tab_height) +
getResources().getDimensionPixelSize(R.dimen.list_padding_vertical);
if (Util.hasKitKatSDK() && !Util.hasLollipopSDK()) {
if (Util.isInPortraitMode(getActivity()) || Util.isTablet(getActivity())) {
return Util.getActionBarSize(getActivity()) + getResources().getDimensionPixelSize(R.dimen.tab_height) + Util.getStatusBarHeight(getActivity());
return norm + Util.getStatusBarHeight(getActivity());
}
return Util.getActionBarSize(getActivity()) + getResources().getDimensionPixelSize(R.dimen.tab_height) + Util.getStatusBarHeight(getActivity());
}
return Util.getActionBarSize(getActivity()) + getResources().getDimensionPixelSize(R.dimen.tab_height);
return norm;
}
protected int getBottomPadding() {