From de12262501e7b36d431309096be49f054900e0a9 Mon Sep 17 00:00:00 2001 From: tom79 Date: Sun, 13 Aug 2017 19:34:07 +0200 Subject: [PATCH] Adds image banner in header when available --- .../mastodon/activities/MediaActivity.java | 11 +++-- .../DisplayScheduledTootsFragment.java | 9 +--- .../gouv/etalab/mastodon/helper/Helper.java | 42 +++++++++++++++++-- app/src/main/res/layout/nav_header_main.xml | 1 + 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java index 34c636db7..1e46becd0 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java @@ -126,14 +126,13 @@ public class MediaActivity extends AppCompatActivity { RelativeLayout main_container_media = (RelativeLayout) findViewById(R.id.main_container_media); if( theme == Helper.THEME_LIGHT){ - main_container_media.setBackgroundResource(R.color.background_image); - changeDrawableColor(getApplicationContext(), R.drawable.ic_next_pic,R.color.colorAccent); - changeDrawableColor(getApplicationContext(), R.drawable.ic_prev_pic,R.color.colorAccent); + main_container_media.setBackgroundResource(R.color.mastodonC2); }else { - main_container_media.setBackgroundResource(R.color.colorPrimaryD); - changeDrawableColor(getApplicationContext(), R.drawable.ic_next_pic,R.color.colorAccentD); - changeDrawableColor(getApplicationContext(), R.drawable.ic_prev_pic,R.color.colorAccentD); + main_container_media.setBackgroundResource(R.color.mastodonC1__); } + changeDrawableColor(getApplicationContext(), R.drawable.ic_next_pic,R.color.mastodonC4); + changeDrawableColor(getApplicationContext(), R.drawable.ic_prev_pic,R.color.mastodonC4); + canSwipe = true; loader = (RelativeLayout) findViewById(R.id.loader); imageView = (PhotoView) findViewById(R.id.media_picture); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayScheduledTootsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayScheduledTootsFragment.java index 1bdde0578..bf2115a24 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayScheduledTootsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayScheduledTootsFragment.java @@ -89,13 +89,8 @@ public class DisplayScheduledTootsFragment extends Fragment implements OnRetriev final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); //Battery saver is one and user never asked to stop showing the message int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); - if( theme == Helper.THEME_DARK) { - changeDrawableColor(context, R.drawable.ic_action_warning, R.color.colorAccentD); - changeDrawableColor(context, R.drawable.ic_cancel, R.color.colorAccentD); - }else { - changeDrawableColor(context, R.drawable.ic_action_warning, R.color.colorAccent); - changeDrawableColor(context, R.drawable.ic_cancel, R.color.colorAccent); - } + changeDrawableColor(context, R.drawable.ic_action_warning, R.color.mastodonC4); + changeDrawableColor(context, R.drawable.ic_cancel, R.color.mastodonC4); if( powerManager.isPowerSaveMode() && sharedpreferences.getBoolean(Helper.SHOW_BATTERY_SAVER_MESSAGE,true)){ warning_battery_message.setVisibility(View.VISIBLE); }else { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 54cb618c9..d5a918554 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -29,7 +29,12 @@ import android.content.res.Resources; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +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.PorterDuff; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; @@ -46,7 +51,6 @@ import android.support.design.widget.NavigationView; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.support.v4.content.ContextCompat; -import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.text.Html; @@ -57,7 +61,6 @@ import android.text.style.ClickableSpan; import android.util.DisplayMetrics; import android.util.Log; import android.util.Patterns; -import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; @@ -72,7 +75,6 @@ import android.webkit.WebView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; -import android.widget.TableLayout; import android.widget.TextView; import android.widget.Toast; @@ -939,8 +941,9 @@ public class Helper { * @param imageLoader ImageLoader - instance of ImageLoader * @param options DisplayImageOptions - current configuration of ImageLoader */ - public static void updateHeaderAccountInfo(final Activity activity, final Account account, View headerLayout, ImageLoader imageLoader, DisplayImageOptions options){ + public static void updateHeaderAccountInfo(final Activity activity, final Account account, final View headerLayout, ImageLoader imageLoader, DisplayImageOptions options){ ImageView profilePicture = (ImageView) headerLayout.findViewById(R.id.profilePicture); + TextView username = (TextView) headerLayout.findViewById(R.id.username); TextView displayedName = (TextView) headerLayout.findViewById(R.id.displayedName); TextView ownerStatus = (TextView) headerLayout.findViewById(R.id.owner_status); @@ -963,6 +966,37 @@ public class Helper { url = "https://" + Helper.getLiveInstance(activity) + account.getAvatar(); } imageLoader.displayImage(url, profilePicture, options); + String urlHeader = account.getHeader(); + if( urlHeader.startsWith("/") ){ + urlHeader = "https://" + Helper.getLiveInstance(activity) + 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) headerLayout.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(activity.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) headerLayout.findViewById(R.id.main_header_container); + main_header_container.setBackgroundResource(R.drawable.side_nav_bar); + } + }); + } } profilePicture.setOnClickListener(null); profilePicture.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/res/layout/nav_header_main.xml b/app/src/main/res/layout/nav_header_main.xml index 3bc6e9c08..0b9791aaf 100644 --- a/app/src/main/res/layout/nav_header_main.xml +++ b/app/src/main/res/layout/nav_header_main.xml @@ -20,6 +20,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/nav_header_height" style="?attr/headerbg" + android:id="@+id/main_header_container" android:gravity="bottom" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin"