Adds header banner for accounts & adds some other improvements with accounts

This commit is contained in:
tom79 2017-08-14 08:53:48 +02:00
parent de12262501
commit 3583cacb26
5 changed files with 93 additions and 17 deletions

View File

@ -19,8 +19,17 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.LightingColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
@ -41,6 +50,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
@ -48,7 +58,10 @@ import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import java.io.File;
@ -103,8 +116,9 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
private boolean isHiddingShowing = false;
private static int instanceValue = 0;
private Relationship relationship;
private TextView account_un;
private boolean showMediaOnly;
private ImageView pp_actionBar;
private LinearLayout main_header_container;
public enum action{
FOLLOW,
@ -132,7 +146,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
account_follow = (FloatingActionButton) findViewById(R.id.account_follow);
account_follow_request = (TextView) findViewById(R.id.account_follow_request);
account_follow.setEnabled(false);
account_un = (TextView) findViewById(R.id.account_un);
main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
if(b != null){
accountId = b.getString("accountId");
new RetrieveRelationshipAsyncTask(getApplicationContext(), accountId,ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@ -220,19 +234,14 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
ImageView account_pp = (ImageView) findViewById(R.id.account_pp);
boolean hide = intent.getBooleanExtra("hide", false);
if( hide){
account_follow.setVisibility(View.GONE);
account_note.setVisibility(View.GONE);
tabLayout.setVisibility(View.GONE);
account_un.setVisibility(View.GONE);
account_pp.getLayoutParams().width = (int) Helper.convertDpToPixel(50, context);
account_pp.getLayoutParams().height = (int) Helper.convertDpToPixel(50, context);
main_header_container.setVisibility(View.GONE);
if( pp_actionBar != null)
pp_actionBar.setVisibility(View.VISIBLE);
}else {
manageButtonVisibility();
account_pp.getLayoutParams().width = (int) Helper.convertDpToPixel(80, context);
account_pp.getLayoutParams().height = (int) Helper.convertDpToPixel(80, context);
tabLayout.setVisibility(View.VISIBLE);
account_note.setVisibility(View.VISIBLE);
account_un.setVisibility(View.VISIBLE);
main_header_container.setVisibility(View.VISIBLE);
if( pp_actionBar != null)
pp_actionBar.setVisibility(View.GONE);
}
account_pp.requestLayout();
Handler handler = new Handler();
@ -319,6 +328,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
Toast.makeText(getApplicationContext(), error.getError(),Toast.LENGTH_LONG).show();
return;
}
ImageView account_pp = (ImageView) findViewById(R.id.account_pp);
TextView account_dn = (TextView) findViewById(R.id.account_dn);
TextView account_un = (TextView) findViewById(R.id.account_un);
@ -329,6 +339,39 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
}else {
changeDrawableColor(getApplicationContext(), R.drawable.ic_action_lock_closed,R.color.black);
}
if( account!= null) {
String urlHeader = account.getHeader();
if (urlHeader.startsWith("/")) {
urlHeader = "https://" + Helper.getLiveInstance(ShowAccountActivity.this) + account.getHeader();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && !urlHeader.contains("missing.png")) {
DisplayImageOptions optionNew = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false)
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
imageLoader.loadImage(urlHeader, optionNew, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
LinearLayout main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
Bitmap workingBitmap = Bitmap.createBitmap(loadedImage);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
Paint p = new Paint(Color.BLACK);
ColorFilter filter = new LightingColorFilter(0xFF7F7F7F, 0x00000000);
p.setColorFilter(filter);
canvas.drawBitmap(mutableBitmap, new Matrix(), p);
BitmapDrawable background = new BitmapDrawable(getResources(), mutableBitmap);
main_header_container.setBackground(background);
}
@Override
public void onLoadingFailed(java.lang.String imageUri, android.view.View view, FailReason failReason) {
LinearLayout main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
main_header_container.setBackgroundResource(R.drawable.side_nav_bar);
}
});
}
}
//Redraws icon for locked accounts
final float scale = getResources().getDisplayMetrics().density;
if( account != null && account.isLocked()){
@ -341,13 +384,33 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
ActionBar actionBar = getSupportActionBar();
LayoutInflater mInflater = LayoutInflater.from(ShowAccountActivity.this);
if( actionBar != null){
if( actionBar != null && account != null){
View show_account_actionbar = mInflater.inflate(R.layout.showaccount_actionbar, null);
TextView actionbar_title = (TextView) show_account_actionbar.findViewById(R.id.show_account_title);
if( account != null && account.getAcct() != null)
if( account.getAcct() != null)
actionbar_title.setText(account.getAcct());
actionBar.setCustomView(show_account_actionbar);
actionBar.setDisplayShowCustomEnabled(true);
pp_actionBar = (ImageView) actionBar.getCustomView().findViewById(R.id.pp_actionBar);
String url = account.getAvatar();
if( url.startsWith("/") ){
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
}
DisplayImageOptions optionsPP = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false)
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
imageLoader.loadImage(url, optionsPP, new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
BitmapDrawable ppDrawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(loadedImage, (int) Helper.convertDpToPixel(25, getApplicationContext()), (int) Helper.convertDpToPixel(25, getApplicationContext()), true));
if( pp_actionBar != null){
pp_actionBar.setImageDrawable(ppDrawable);
}
}
@Override
public void onLoadingFailed(java.lang.String imageUri, android.view.View view, FailReason failReason){
}});
}else {
if( account != null && account.getAcct() != null)
setTitle(account.getAcct());

View File

@ -24,6 +24,7 @@
android:animateLayoutChanges="true"
android:orientation="vertical">
<LinearLayout
android:id="@+id/main_header_container"
android:layout_marginTop="5dp"
android:layout_width="400dp"
android:layout_gravity="center"

View File

@ -24,6 +24,7 @@
android:animateLayoutChanges="true"
android:orientation="vertical">
<LinearLayout
android:id="@+id/main_header_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

View File

@ -21,6 +21,16 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:ignore="UseCompoundDrawables">
<ImageView
android:visibility="gone"
android:id="@+id/pp_actionBar"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
tools:ignore="ContentDescription" />
<TextView
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
@ -30,5 +40,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="?attr/actionBarTextColor"
/>
</LinearLayout>

View File

@ -13,7 +13,7 @@
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/mastodonC1</item>
<item name="colorPrimaryDark">@color/mastodonC3__</item>
<item name="colorPrimaryDark">@color/mastodonC2</item>
<item name="colorAccent">@color/mastodonC4</item>
<item name="android:buttonStyle">@style/ButtonColor</item>
<item name="cardStyle">@style/CardViewStyle.Light</item>
@ -34,7 +34,7 @@
<style name="AppTheme_NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/mastodonC1</item>
<item name="colorPrimaryDark">@color/mastodonC3__</item>
<item name="colorPrimaryDark">@color/mastodonC2</item>
<item name="colorAccent">@color/mastodonC4</item>
<item name="android:buttonStyle">@style/ButtonColor</item>
<item name="cardStyle">@style/CardViewStyle.Light</item>