Skip to content
Snippets Groups Projects
Commit 1ed19bd6 authored by Jawnnypoo's avatar Jawnnypoo
Browse files

Spruce up the UserActivity

parent 4251791b
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -57,6 +57,7 @@ dependencies {
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.android.support:palette-v7:23.0.1'
compile "org.parceler:parceler-api:1.0.3"
apt "org.parceler:parceler:1.0.3"
compile 'com.commit451:bypasses:1.0.0'
Loading
Loading
Loading
Loading
@@ -2,11 +2,27 @@ package com.commit451.gitlab.activities;
 
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.v7.graphics.Palette;
import android.support.v7.internal.widget.ThemeUtils;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.User;
import com.commit451.gitlab.tools.ColorUtil;
import com.commit451.gitlab.tools.ImageUtil;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
 
import org.parceler.Parcels;
import butterknife.Bind;
import butterknife.ButterKnife;
 
/**
Loading
Loading
@@ -15,15 +31,68 @@ import butterknife.ButterKnife;
*/
public class UserActivity extends BaseActivity {
 
private static final String KEY_USER = "user";
public static Intent newInstance(Context context, User user) {
Intent intent = new Intent(context, UserActivity.class);
intent.putExtra(KEY_USER, Parcels.wrap(user));
return intent;
}
 
@Bind(R.id.toolbar) Toolbar mToolbar;
@Bind(R.id.collapsing_toolbar) CollapsingToolbarLayout mCollapsingToolbarLayout;
@Bind(R.id.backdrop) ImageView mBackdrop;
@Bind(R.id.user_name) TextView mUserName;
@Bind(R.id.user_username) TextView mUserUsername;
User mUser;
private final Target mImageLoadTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
mBackdrop.setImageBitmap(bitmap);
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
public void onGenerated(Palette p) {
bindPalette(p);
}
});
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
ButterKnife.bind(this);
mUser = Parcels.unwrap(getIntent().getParcelableExtra(KEY_USER));
mToolbar.setNavigationIcon(R.drawable.ic_back_24dp);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
String url = ImageUtil.getGravatarUrl(mUser, getResources().getDimensionPixelSize(R.dimen.user_header_image_size));
Picasso.with(this)
.load(url)
.into(mImageLoadTarget);
mUserName.setText(mUser.getName());
mUserUsername.setText("@" + mUser.getUsername());
}
private void bindPalette(Palette palette) {
int vibrantColor = palette.getVibrantColor(ThemeUtils.getThemeAttrColor(this, R.attr.colorPrimary));
ColorUtil.animateStatusBarAndNavBarColors(getWindow(), ColorUtil.getDarkerColor(vibrantColor));
//TODO animate this too
mCollapsingToolbarLayout.setContentScrimColor(vibrantColor);
ColorUtil.animateTextColor(mUserName, vibrantColor);
ColorUtil.animateTextColor(mUserUsername, vibrantColor);
}
}
package com.commit451.gitlab.tools;
import android.animation.Animator;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.widget.SwitchCompat;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.CheckBox;
import android.widget.TextView;
import com.commit451.gitlab.R;
public class ColorUtil {
private static float[] hsv = new float[3];
public static int getDarkerColor(int color) {
Color.colorToHSV(color, hsv);
hsv[2] *= 0.8f; // value component
return Color.HSVToColor(hsv);
}
public static void setStatusBarAndNavBarColor(Window window, int color) {
if (Build.VERSION.SDK_INT >= 21) {
window.setStatusBarColor(color);
window.setNavigationBarColor(color);
}
}
public static void animateStatusBarAndNavBarColors(Window window, int endColor) {
if (Build.VERSION.SDK_INT >= 21) {
statusBar(window, window.getStatusBarColor(), endColor);
navigationBar(window, window.getNavigationBarColor(), endColor);
}
}
public static ColorStateList createColorStateList(int color) {
return ColorStateList.valueOf(color);
}
public static ColorStateList createColorStateList(int color, int pressed) {
return new ColorStateList(new int[][]{
new int[]{android.R.attr.state_pressed},
new int[]{}
}, new int[]{
pressed,
color
});
}
public static void setBackgroundDrawable(View view, Drawable drawable) {
if (Build.VERSION.SDK_INT >= 16) {
view.setBackground(drawable);
} else {
view.setBackgroundDrawable(drawable);
}
}
public static int getBackgroundColor(View v) {
Drawable background = v.getBackground();
if (background instanceof ColorDrawable) {
return ((ColorDrawable) background).getColor();
} else {
return Color.TRANSPARENT;
}
}
public static Animator animateBackgroundColor(View v, int endColor) {
ObjectAnimator oa = ObjectAnimator.ofObject(v, "backgroundColor", new ArgbEvaluator(),
getBackgroundColor(v), endColor);
oa.start();
return oa;
}
public static Animator statusBar(Window window, int startColor, int endColor) {
ObjectAnimator oa = ObjectAnimator.ofObject(window, "statusBarColor", new ArgbEvaluator(),
startColor, endColor);
oa.start();
return oa;
}
public static Animator navigationBar(Window window, int startColor, int endColor) {
ObjectAnimator oa = ObjectAnimator.ofObject(window, "navigationBarColor", new ArgbEvaluator(),
startColor, endColor);
oa.start();
return oa;
}
public static void setTint(CheckBox box, int color, int unpressedColor) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
}, new int[]{
unpressedColor,
color
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
box.setButtonTintList(sl);
} else {
Drawable drawable = DrawableCompat.wrap(ContextCompat.getDrawable(box.getContext(), R.drawable.abc_btn_check_material));
DrawableCompat.setTintList(drawable, sl);
box.setButtonDrawable(drawable);
}
}
public static void setTint(SwitchCompat switchCompat, int color, int unpressedColor) {
ColorStateList sl = new ColorStateList(new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
}, new int[]{
unpressedColor,
color
});
DrawableCompat.setTintList(switchCompat.getThumbDrawable(), sl);
}
public static void setMenuItemsColor(Menu menu, int color) {
for (int i = 0; i < menu.size(); i++) {
Drawable icon = menu.getItem(i).getIcon();
if (icon != null) {
icon.setColorFilter(color, PorterDuff.Mode.MULTIPLY);
}
}
}
public static Animator animateTextColor(TextView textView, int color) {
ObjectAnimator oa = ObjectAnimator.ofObject(textView, "textColor", new ArgbEvaluator(),
textView.getCurrentTextColor(), color);
oa.start();
return oa;
}
}
Loading
Loading
@@ -10,7 +10,7 @@
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_height="@dimen/user_header_image_size"
android:fitsSystemWindows="true">
 
<android.support.design.widget.CollapsingToolbarLayout
Loading
Loading
@@ -29,7 +29,8 @@
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" />
app:layout_collapseMode="parallax"
android:contentDescription="@null"/>
 
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
Loading
Loading
@@ -47,12 +48,6 @@
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="24dp">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
Loading
Loading
@@ -60,75 +55,31 @@
 
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="vertical">
 
<TextView
android:layout_width="match_parent"
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Info"
android:textAppearance="@style/TextAppearance.AppCompat.Title" />
android:layout_margin="8dp"
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="@dimen/text_size_large"/>
 
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:id="@+id/user_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Friends"
android:textAppearance="@style/TextAppearance.AppCompat.Title" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="askdlfjalksjdf" />
android:layout_margin="8dp"
android:textColor="@color/black"
android:textSize="@dimen/text_size_normal"/>
 
</LinearLayout>
 
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Related"
android:textAppearance="@style/TextAppearance.AppCompat.Title" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="kjas;kdkf;kadsf" />
</LinearLayout>
</android.support.v7.widget.CardView>
 
</android.support.v7.widget.CardView>
 
</LinearLayout>
 
</android.support.v4.widget.NestedScrollView>
 
Loading
Loading
Loading
Loading
@@ -18,4 +18,6 @@
<dimen name="border_size">2dp</dimen>
<dimen name="circle_size">56dp</dimen>
<dimen name="navigation_drawer_header_height">148dp</dimen>
<dimen name="user_header_image_size">300dp</dimen>
</resources>
\ No newline at end of file
Loading
Loading
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment