From 5432d103313b9e53e0a277a2ddc48851a24f1165 Mon Sep 17 00:00:00 2001 From: tateisu Date: Sun, 18 Nov 2018 23:29:35 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=AB=E3=80=8C=E3=83=96=E3=83=BC=E3=82=B9=E3=83=88=E3=83=9C?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E3=81=AE=E3=82=A2=E3=83=AB=E3=83=95=E3=82=A1?= =?UTF-8?q?=E5=80=A4=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82=E6=98=8E?= =?UTF-8?q?=E3=82=8B=E3=81=84=E3=83=86=E3=83=BC=E3=83=9E=E3=81=AE=E3=82=AB?= =?UTF-8?q?=E3=83=A9=E3=83=A0=E3=83=98=E3=83=83=E3=83=80=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E8=89=B2=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?= =?UTF-8?q?=E5=80=A4=E3=82=92=E7=99=BD=E3=81=8F=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jp/juggler/subwaytooter/ActAppSetting.kt | 12 ++- .../subwaytooter/ActColumnCustomize.kt | 55 ++++-------- .../java/jp/juggler/subwaytooter/ActMain.kt | 45 +++++----- .../java/jp/juggler/subwaytooter/Column.kt | 42 +++++++++- .../juggler/subwaytooter/ColumnViewHolder.kt | 83 ++++++------------- .../jp/juggler/subwaytooter/ItemViewHolder.kt | 60 ++++++++------ .../main/java/jp/juggler/subwaytooter/Pref.kt | 2 + .../jp/juggler/subwaytooter/StatusButtons.kt | 14 ++-- .../java/jp/juggler/subwaytooter/Styler.kt | 32 ++++--- .../subwaytooter/ViewHolderHeaderProfile.kt | 11 ++- .../jp/juggler/subwaytooter/util/Utils.kt | 10 +++ .../bg_column_header.xml} | 0 app/src/main/res/drawable/btn_bg_ddd.xml | 26 ------ app/src/main/res/layout/act_app_setting.xml | 21 ++++- app/src/main/res/layout/act_main.xml | 6 +- app/src/main/res/layout/lv_column_strip.xml | 2 +- app/src/main/res/layout/page_column.xml | 2 +- app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values/attrs.xml | 7 ++ app/src/main/res/values/colors.xml | 8 +- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 4 + 22 files changed, 239 insertions(+), 205 deletions(-) rename app/src/main/res/{drawable-v21/btn_bg_ddd.xml => drawable/bg_column_header.xml} (100%) delete mode 100644 app/src/main/res/drawable/btn_bg_ddd.xml diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActAppSetting.kt b/app/src/main/java/jp/juggler/subwaytooter/ActAppSetting.kt index c502c703..3a0954de 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActAppSetting.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActAppSetting.kt @@ -134,6 +134,7 @@ class ActAppSetting : AppCompatActivity() private lateinit var etMediaSizeMax : EditText private lateinit var etMovieSizeMax : EditText private lateinit var etRoundRatio : EditText + private lateinit var etBoostAlpha : EditText private lateinit var etMediaReadTimeout : EditText @@ -147,6 +148,7 @@ class ActAppSetting : AppCompatActivity() private lateinit var tvTimelineFontSize : TextView private lateinit var tvAcctFontSize : TextView private lateinit var etAvatarIconSize : EditText + private lateinit var etPullNotificationCheckInterval : EditText private lateinit var etNotificationTlFontSize : EditText @@ -332,6 +334,9 @@ class ActAppSetting : AppCompatActivity() etRoundRatio = findViewById(R.id.etRoundRatio) etRoundRatio.addTextChangedListener(this) + etBoostAlpha = findViewById(R.id.etBoostAlpha) + etBoostAlpha.addTextChangedListener(this) + etMediaReadTimeout= findViewById(R.id.etMediaReadTimeout) etMediaReadTimeout.addTextChangedListener(this) @@ -440,6 +445,7 @@ class ActAppSetting : AppCompatActivity() etMediaSizeMax.setText(Pref.spMediaSizeMax(pref)) etMovieSizeMax.setText(Pref.spMovieSizeMax(pref)) etRoundRatio.setText(Pref.spRoundRatio(pref)) + etBoostAlpha.setText(Pref.spBoostAlpha(pref)) etMediaReadTimeout.setText(Pref.spMediaReadTimeout(pref)) @@ -521,6 +527,8 @@ class ActAppSetting : AppCompatActivity() .put(Pref.spMovieSizeMax, etMovieSizeMax.text.toString().trim { it <= ' ' }) .put(Pref.spRoundRatio, etRoundRatio.text.toString().trim { it <= ' ' }) + .put(Pref.spBoostAlpha, etBoostAlpha.text.toString().trim { it <= ' ' }) + .put(Pref.spMediaReadTimeout, etMediaReadTimeout.text.toString().trim { it <= ' ' }) @@ -849,8 +857,8 @@ class ActAppSetting : AppCompatActivity() var c = footer_button_bg_color if(c == 0) { - ivFooterToot.setBackgroundResource(R.drawable.btn_bg_ddd) - ivFooterMenu.setBackgroundResource(R.drawable.btn_bg_ddd) + ivFooterToot.setBackgroundResource(R.drawable.bg_button_cw) + ivFooterMenu.setBackgroundResource(R.drawable.bg_button_cw) } else { val fg = if(footer_button_fg_color != 0) footer_button_fg_color diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActColumnCustomize.kt b/app/src/main/java/jp/juggler/subwaytooter/ActColumnCustomize.kt index 3e9b8248..18ee6036 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActColumnCustomize.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActColumnCustomize.kt @@ -23,6 +23,7 @@ import jp.juggler.subwaytooter.api.TootTask import jp.juggler.subwaytooter.api.TootTaskRunner import jp.juggler.subwaytooter.util.* import org.apache.commons.io.IOUtils +import org.jetbrains.anko.textColor import java.io.File import java.io.FileOutputStream @@ -126,13 +127,13 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke } R.id.btnHeaderTextEdit -> { - builder = ColorPickerDialog.newBuilder() + ColorPickerDialog.newBuilder() .setDialogType(ColorPickerDialog.TYPE_CUSTOM) .setAllowPresets(true) .setShowAlphaSlider(false) .setDialogId(COLOR_DIALOG_ID_HEADER_FOREGROUND) - if(column.header_fg_color != 0) builder.setColor(column.header_fg_color) - builder.show(this) + .setColor(column.getHeaderNameColor(this)) + .show(this) } R.id.btnHeaderTextReset -> { @@ -387,43 +388,19 @@ class ActColumnCustomize : AppCompatActivity(), View.OnClickListener, ColorPicke private fun show() { try { loading_busy = true - var c = column.header_bg_color - if(c == 0) { - llColumnHeader.setBackgroundResource(R.drawable.btn_bg_ddd) - } else { - ViewCompat.setBackground( - llColumnHeader, Styler.getAdaptiveRippleDrawable( - c, - if(column.header_fg_color != 0) - column.header_fg_color - else - Styler.getAttributeColor(this, R.attr.colorRippleEffect) - ) - ) - } - c = column.header_fg_color - if(c == 0) { - tvColumnName.setTextColor( - Styler.getAttributeColor( - this, - android.R.attr.textColorPrimary - ) - ) - Styler.setIconAttr( - this, - ivColumnHeader, - column.getIconAttrId(column.column_type) - ) - } else { - tvColumnName.setTextColor(c) - Styler.setIconAttr( - this, - ivColumnHeader, - column.getIconAttrId(column.column_type), - color = c - ) - } + column.setHeaderBackground(this,llColumnHeader) + + + + var c = column.getHeaderNameColor(this) + tvColumnName.textColor = c + Styler.setIconAttr( + this, + ivColumnHeader, + column.getIconAttrId(column.column_type), + color = c + ) tvColumnName.text = column.getColumnName(false) diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt index 2ee57cf7..d5cc6707 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActMain.kt @@ -1222,6 +1222,20 @@ class ActMain : AppCompatActivity() Styler.round_ratio = clipRange(0f, 1f, round_ratio / 100f) * 0.5f } + run { + var boost_alpha :Float? = 0.8f + try{ + val f = ( Pref.spBoostAlpha.toInt(pref).toFloat() +0.5f )/100f + boost_alpha = when{ + f >= 1f -> null + f < 0f -> 0.66f + else-> f + } + } catch(ex : Throwable) { + log.trace(ex) + } + Styler.boost_alpha = boost_alpha + } llEmpty = findViewById(R.id.llEmpty) @@ -1415,28 +1429,11 @@ class ActMain : AppCompatActivity() viewRoot.contentDescription = column.getColumnName(true) // - var c = column.header_bg_color - if(c == 0) { - viewRoot.setBackgroundResource(R.drawable.btn_bg_ddd) - } else { - ViewCompat.setBackground( - viewRoot, Styler.getAdaptiveRippleDrawable( - c, - if(column.header_fg_color != 0) - column.header_fg_color - else - Styler.getAttributeColor(this, R.attr.colorRippleEffect) - - ) - ) - } + column.setHeaderBackground(this,viewRoot) - c = column.header_fg_color - if(c == 0) { - Styler.setIconAttr(this, ivIcon, column.getIconAttrId(column.column_type)) - } else { - Styler.setIconAttr(this, ivIcon, column.getIconAttrId(column.column_type), c) - } + + var c = column.getHeaderNameColor(this) + Styler.setIconAttr(this, ivIcon, column.getIconAttrId(column.column_type), c) // val ac = AcctColor.load(column.access_info.acct) @@ -2265,9 +2262,9 @@ class ActMain : AppCompatActivity() val footer_tab_indicator_color = Pref.ipFooterTabIndicatorColor(pref) var c = footer_button_bg_color if(c == 0) { - btnMenu.setBackgroundResource(R.drawable.btn_bg_ddd) - btnToot.setBackgroundResource(R.drawable.btn_bg_ddd) - btnQuickToot.setBackgroundResource(R.drawable.btn_bg_ddd) + btnMenu.setBackgroundResource(R.drawable.bg_button_cw) + btnToot.setBackgroundResource(R.drawable.bg_button_cw) + btnQuickToot.setBackgroundResource(R.drawable.bg_button_cw) } else { val fg = if(footer_button_fg_color != 0) footer_button_fg_color diff --git a/app/src/main/java/jp/juggler/subwaytooter/Column.kt b/app/src/main/java/jp/juggler/subwaytooter/Column.kt index e4f9b219..9b68549e 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Column.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Column.kt @@ -6,8 +6,10 @@ import android.net.Uri import android.os.AsyncTask import android.os.Environment import android.os.SystemClock +import android.support.v4.view.ViewCompat import android.support.v7.app.AppCompatActivity import android.view.Gravity +import android.view.View import jp.juggler.subwaytooter.api.* import jp.juggler.subwaytooter.api.entity.* import jp.juggler.subwaytooter.table.* @@ -1926,11 +1928,12 @@ class Column( // 初回の取得 val result = when { isMisskey -> { - if( initialUntilDate ){ - params.put("untilDate",System.currentTimeMillis() + ( 86400000L * 365)) + if(initialUntilDate) { + params.put("untilDate", System.currentTimeMillis() + (86400000L * 365)) } client.request(path_base, params.toPostRequestBuilder()) } + aroundMin -> client.request("$path_base&min_id=$status_id") aroundMax -> client.request("$path_base&max_id=$status_id") else -> client.request(path_base) @@ -2830,7 +2833,7 @@ class Column( , misskeyParams = makeMisskeyTimelineParameter(parser) .put("tag", hashtag) .put("limit", MISSKEY_HASHTAG_LIMIT) - + ) } else { getStatuses(client, makeHashtagUrl(hashtag)) @@ -6831,6 +6834,39 @@ class Column( Styler.getAttributeColor(activity, R.attr.colorTimeSmall) } + fun getHeaderPageNumberColor(activity : AppCompatActivity) : Int { + val c = header_fg_color + return when { + c != 0 -> c + else -> Styler.getAttributeColor( + activity, + R.attr.colorColumnHeaderPageNumber + ) + } + } + + fun getHeaderNameColor(activity : AppCompatActivity) : Int { + val c = header_fg_color + return when { + c != 0 -> c + else -> Styler.getAttributeColor( + activity, + R.attr.colorColumnHeaderName + ) + } + } + + fun setHeaderBackground(activity : AppCompatActivity, view : View) { + val c = header_bg_color + if(c == 0) { + view.setBackgroundResource(R.drawable.bg_column_header) + } else { + ViewCompat.setBackground( + view, Styler.getAdaptiveRippleDrawable(c, getHeaderNameColor(activity)) + ) + } + } + // fun findListIndexByTimelineId(orderId : EntityId) : Int? { // list_data.forEachIndexed { i, v -> // if(v.getOrderId() == orderId) return i diff --git a/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt b/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt index da9e6e89..1f0aa19c 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ColumnViewHolder.kt @@ -657,66 +657,29 @@ class ColumnViewHolder( fun showColumnColor() { val column = this.column if(column == null || column.is_dispose.get()) return + + // カラムヘッダ背景 + column.setHeaderBackground(activity,llColumnHeader) + + // カラムヘッダ文字色(A) + var c = column.getHeaderNameColor(activity) + tvColumnName.textColor =c + Styler.setIconAttr( + activity, + ivColumnIcon, + column.getIconAttrId(column.column_type), + c + ) + Styler.setIconAttr(activity, btnColumnSetting, R.attr.ic_tune, c) + Styler.setIconAttr(activity, btnColumnReload, R.attr.btn_refresh, c) + Styler.setIconAttr(activity, btnColumnClose, R.attr.btn_close, c) - var c = column.header_bg_color - if(c == 0) { - llColumnHeader.setBackgroundResource(R.drawable.btn_bg_ddd) - } else { - ViewCompat.setBackground( - llColumnHeader, - Styler.getAdaptiveRippleDrawable( - c, - if(column.header_fg_color != 0) - column.header_fg_color - else - Styler.getAttributeColor(activity, R.attr.colorRippleEffect) - ) - ) - } - - c = column.header_fg_color - if(c == 0) { - tvColumnIndex.setTextColor( - Styler.getAttributeColor( - activity, - R.attr.colorColumnHeaderPageNumber - ) - ) - tvColumnStatus.setTextColor( - Styler.getAttributeColor( - activity, - R.attr.colorColumnHeaderPageNumber - ) - ) - tvColumnName.setTextColor( - Styler.getAttributeColor( - activity, - android.R.attr.textColorPrimary - ) - ) - Styler.setIconAttr( - activity, - ivColumnIcon, - column.getIconAttrId(column.column_type) - ) - Styler.setIconAttr(activity, btnColumnSetting, R.attr.ic_tune) - Styler.setIconAttr(activity, btnColumnReload, R.attr.btn_refresh) - Styler.setIconAttr(activity, btnColumnClose, R.attr.btn_close) - } else { - tvColumnIndex.setTextColor(c) - tvColumnStatus.setTextColor(c) - tvColumnName.setTextColor(c) - Styler.setIconAttr( - activity, - ivColumnIcon, - column.getIconAttrId(column.column_type), - c - ) - Styler.setIconAttr(activity, btnColumnSetting, R.attr.ic_tune, c) - Styler.setIconAttr(activity, btnColumnReload, R.attr.btn_refresh, c) - Styler.setIconAttr(activity, btnColumnClose, R.attr.btn_close, c) - } + // カラムヘッダ文字色(B) + c = column.getHeaderPageNumberColor(activity) + tvColumnIndex.textColor =c + tvColumnStatus.textColor =c + // カラム内部の背景色 c = column.column_bg_color if(c == 0) { ViewCompat.setBackground(flColumnBackground, null) @@ -724,15 +687,17 @@ class ColumnViewHolder( flColumnBackground.setBackgroundColor(c) } + // カラム内部の背景画像 ivColumnBackgroundImage.alpha = column.column_bg_image_alpha - loadBackgroundImage(ivColumnBackgroundImage, column.column_bg_image) + // エラー表示 tvLoading.textColor = column.getContentColor(activity) status_adapter?.findHeaderViewHolder(listView)?.showColor() } + private fun closeBitmaps() { try { ivColumnBackgroundImage.visibility = View.GONE diff --git a/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt b/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt index 69c5940e..47fa3648 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt @@ -217,7 +217,7 @@ internal class ItemViewHolder( llTrendTag.setOnLongClickListener(this) llFilter.setOnClickListener(this) - var f :Float + var f : Float f = activity.timeline_font_size_sp if(! f.isNaN()) { @@ -253,7 +253,7 @@ internal class ItemViewHolder( tvAcct.textSize = f tvTime.textSize = f tvTrendTagDesc.textSize = f - tvFilterDetail.textSize =f + tvFilterDetail.textSize = f } var s = activity.avatarIconSize @@ -261,7 +261,7 @@ internal class ItemViewHolder( ivThumbnail.layoutParams.width = s ivFollow.layoutParams.width = s ivBoosted.layoutParams.width = s - + s = activity.notificationTlIconSize ivBoosted.layoutParams.height = s @@ -423,12 +423,12 @@ internal class ItemViewHolder( (llCardOuter.background as? PreviewCardBorder)?.let { val rgb = c and 0xffffff - val alpha = max(1, c ushr (24+1)) // 本来の値の半分にする - it.color = rgb or ( alpha shl 24) + val alpha = max(1, c ushr (24 + 1)) // 本来の値の半分にする + it.color = rgb or (alpha shl 24) } c = column.getAcctColor(activity) - log.d("acct_color %x",c) + log.d("acct_color %x", c) this.acct_color = c tvBoostedTime.setTextColor(c) tvTime.setTextColor(c) @@ -628,13 +628,13 @@ internal class ItemViewHolder( val reblog = item.reblog when { reblog == null -> showStatusOrReply(item) - + ! item.hasAnyContent() -> { // 通常のブースト。引用なしブースト。 // ブースト表示は通知イベントと被るのでしない showStatusOrReply(reblog) } - + else -> { // 引用Renote showReply( @@ -714,13 +714,13 @@ internal class ItemViewHolder( TootNotification.TYPE_MENTION, TootNotification.TYPE_REPLY -> { if(! bSimpleList && ! access_info.isMisskey) { - if(n_account != null){ - if( n_status?.in_reply_to_id != null - ||n_status?.reply != null - ){ + if(n_account != null) { + if(n_status?.in_reply_to_id != null + || n_status?.reply != null + ) { // トゥート内部に「~への返信」を表示するので、 // 通知イベントの「~からの返信」は表示しない - }else{ + } else { // 返信ではなくメンションの場合は「~からの返信」を表示する showBoost( n_accountRef, @@ -743,7 +743,7 @@ internal class ItemViewHolder( n.time_created_at, R.attr.ic_question, R.string.display_name_reaction_by - ,reactionDrawableId = reaction?.btnDrawableId + , reactionDrawableId = reaction?.btnDrawableId ) if(n_status != null) { showNotificationStatus(n_status) @@ -864,8 +864,9 @@ internal class ItemViewHolder( Styler.setIconAttr( activity, ivReply, - iconAttrId, - color = content_color + iconAttrId, + color = content_color, + alphaMultiplier = Styler.boost_alpha ) tvReply.text = text @@ -895,11 +896,11 @@ internal class ItemViewHolder( llReply.visibility = View.VISIBLE val name = if(accountId == replyStatus.account.id) { - AcctColor.getNicknameWithColor( access_info.getFullAcct(replyStatus.account)) + AcctColor.getNicknameWithColor(access_info.getFullAcct(replyStatus.account)) } else { val m = replyStatus.mentions?.find { it.id == accountId } if(m != null) { - AcctColor.getNicknameWithColor( access_info.getFullAcct(m.acct)) + AcctColor.getNicknameWithColor(access_info.getFullAcct(m.acct)) } else { SpannableString("ID(${accountId})") } @@ -939,7 +940,8 @@ internal class ItemViewHolder( activity, ivBoosted, icon_attr_id, - color = content_color + color = content_color, + alphaMultiplier = Styler.boost_alpha ) } @@ -968,7 +970,15 @@ internal class ItemViewHolder( setAcct(tvFollowerAcct, access_info.getFullAcct(who), who.acct) val relation = UserRelation.load(access_info.db_id, who.id) - Styler.setFollowIcon(activity, btnFollow, ivFollowedBy, relation, who,content_color) + Styler.setFollowIcon( + activity, + btnFollow, + ivFollowedBy, + relation, + who, + content_color, + alphaMultiplier = Styler.boost_alpha + ) if(column.column_type == Column.TYPE_FOLLOW_REQUESTS) { llFollowRequest.visibility = View.VISIBLE @@ -1147,7 +1157,8 @@ internal class ItemViewHolder( activity, btnHideMedia, R.attr.btn_close, - color = content_color + color = content_color, + alphaMultiplier = Styler.boost_alpha ) } @@ -1903,8 +1914,6 @@ internal class ItemViewHolder( // c != null && c > 0 // } ?: return - - val density = activity.resources.displayMetrics.density val buttonHeight = ActMain.boostButtonSize @@ -1947,7 +1956,8 @@ internal class ItemViewHolder( activity, b, R.drawable.ic_add, - color = content_color + color = content_color, + alphaMultiplier = Styler.boost_alpha ) box.addView(b) @@ -2404,7 +2414,7 @@ internal class ItemViewHolder( btnContentWarning = button { background = - ContextCompat.getDrawable(context, R.drawable.btn_bg_ddd) + ContextCompat.getDrawable(context, R.drawable.bg_button_cw) minWidthCompat = dip(40) padding = dip(4) //tools:text="見る" diff --git a/app/src/main/java/jp/juggler/subwaytooter/Pref.kt b/app/src/main/java/jp/juggler/subwaytooter/Pref.kt index 40c1c8ce..97b8088d 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Pref.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Pref.kt @@ -411,6 +411,8 @@ object Pref { val spMspUserToken = StringPref("mastodon_search_portal_user_token", "") val spEmojiPickerRecent = StringPref("emoji_picker_recent", "") val spRoundRatio = StringPref("round_ratio", "33") + val spBoostAlpha = StringPref("BoostAlpha", "60") + val spPullNotificationCheckInterval = StringPref("PullNotificationCheckInterval", "15") val spUserAgent = StringPref("UserAgent", "") diff --git a/app/src/main/java/jp/juggler/subwaytooter/StatusButtons.kt b/app/src/main/java/jp/juggler/subwaytooter/StatusButtons.kt index 43bf02f1..d0e20627 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/StatusButtons.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/StatusButtons.kt @@ -21,6 +21,7 @@ import jp.juggler.subwaytooter.api.entity.TootVisibility import jp.juggler.subwaytooter.table.SavedAccount import jp.juggler.subwaytooter.table.UserRelation import jp.juggler.subwaytooter.util.LogCategory +import jp.juggler.subwaytooter.util.applyAlphaMultiplier import jp.juggler.subwaytooter.util.startMargin import jp.juggler.subwaytooter.view.CountImageButton import org.jetbrains.anko.* @@ -92,13 +93,15 @@ internal class StatusButtons( activity, btnConversation, R.drawable.ic_conversation_dark, - color = color_normal + color = color_normal, + alphaMultiplier = Styler.boost_alpha ) Styler.setIconDrawableId( activity, btnMore, R.drawable.btn_more_dark, - color = color_normal + color = color_normal, + alphaMultiplier = Styler.boost_alpha ) // val a = (((color_normal ushr 24)/255f) * 0.7f) @@ -198,7 +201,8 @@ internal class StatusButtons( ivFollowedBy2, relation, account, - color_normal + color_normal, + alphaMultiplier = Styler.boost_alpha ) relation } @@ -213,10 +217,10 @@ internal class StatusButtons( count : String, contentDescription : String ) { - val d = Styler.createColoredDrawable(activity,drawableId,color) + val d = Styler.createColoredDrawable(activity,drawableId,color,alphaMultiplier = Styler.boost_alpha) b.setImageDrawable(d) b.setPaddingAndText(holder.paddingH, holder.paddingV, count, 14f, holder.compoundPaddingDp) - b.setTextColor(color) + b.setTextColor(color.applyAlphaMultiplier(Styler.boost_alpha)) b.contentDescription = contentDescription + count b.isEnabled = enabled } diff --git a/app/src/main/java/jp/juggler/subwaytooter/Styler.kt b/app/src/main/java/jp/juggler/subwaytooter/Styler.kt index 27a3596a..abe51d79 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Styler.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Styler.kt @@ -18,6 +18,7 @@ import jp.juggler.subwaytooter.api.entity.TootAccount import jp.juggler.subwaytooter.api.entity.TootVisibility import jp.juggler.subwaytooter.span.EmojiImageSpan import jp.juggler.subwaytooter.table.UserRelation +import jp.juggler.subwaytooter.util.clipRange import java.util.* object Styler { @@ -58,13 +59,20 @@ object Styler { ) } + + fun createColoredDrawable( context : Context, drawableId : Int, - color : Int + color : Int, + alphaMultiplier: Float? = null ) : Drawable { val rgb = (color and 0xffffff) or Color.BLACK - val alpha = (color ushr 24) + val alpha = if( alphaMultiplier ==null ){ + (color ushr 24) + }else{ + clipRange(0,255,((color ushr 24).toFloat() * alphaMultiplier +0.5f ).toInt()) + } // 色指定が他のアイコンに影響しないようにする // カラーフィルターとアルファ値を設定する @@ -79,13 +87,14 @@ object Styler { context : Context, imageView : ImageView, drawableId : Int, - color : Int? = null + color : Int? = null, + alphaMultiplier: Float? = null ) { if(color == null) { // ImageViewにアイコンを設定する。デフォルトの色 imageView.setImageDrawable(ContextCompat.getDrawable(context, drawableId)) } else { - imageView.setImageDrawable(createColoredDrawable(context, drawableId, color)) + imageView.setImageDrawable(createColoredDrawable(context, drawableId, color,alphaMultiplier)) } } @@ -93,9 +102,10 @@ object Styler { context : Context, imageView : ImageView, iconAttrId : Int, - color : Int? = null + color : Int? = null, + alphaMultiplier: Float? = null ) { - setIconDrawableId(context, imageView, getAttributeResourceId(context, iconAttrId), color) + setIconDrawableId(context, imageView, getAttributeResourceId(context, iconAttrId), color,alphaMultiplier) } fun getVisibilityIconAttr(isMisskeyData : Boolean, visibility : TootVisibility) : Int { @@ -214,6 +224,7 @@ object Styler { , relation : UserRelation , who : TootAccount , defaultColor : Int + ,alphaMultiplier : Float? = null ) { fun colorError() = Styler.getAttributeColor(context, R.attr.colorRegexFilterError) @@ -224,17 +235,17 @@ object Styler { relation.blocked_by -> { ivDot.visibility = View.VISIBLE - setIconDrawableId(context, ivDot, R.drawable.ic_blocked_by, color = colorError()) + setIconDrawableId(context, ivDot, R.drawable.ic_blocked_by, color = colorError(),alphaMultiplier = alphaMultiplier) } relation.requested_by -> { ivDot.visibility = View.VISIBLE - setIconDrawableId(context, ivDot, R.drawable.ic_requested_by, color = colorError()) + setIconDrawableId(context, ivDot, R.drawable.ic_requested_by, color = colorError(),alphaMultiplier = alphaMultiplier) } relation.followed_by -> { ivDot.visibility = View.VISIBLE - setIconAttr(context, ivDot, R.attr.ic_followed_by, color = colorAccent()) + setIconAttr(context, ivDot, R.attr.ic_followed_by, color = colorAccent(),alphaMultiplier = alphaMultiplier) // 被フォローリクエスト状態の時に followed_by が 真と偽の両方がありえるようなので // Relationshipだけを見ても被フォローリクエスト状態は分からないっぽい // 仕方ないので馬鹿正直に「 followed_byが真ならバッジをつける」しかできない @@ -283,7 +294,7 @@ object Styler { } } - setIconAttr(context, ibFollow, icon_attr, color = color) + setIconAttr(context, ibFollow, icon_attr, color = color,alphaMultiplier = alphaMultiplier) ibFollow.contentDescription = contentDescription } @@ -350,6 +361,7 @@ object Styler { // ActMainの初期化時に更新される var round_ratio : Float = 0.33f * 0.5f + var boost_alpha : Float? = null fun calcIconRound(wh : Int) = wh.toFloat() * round_ratio diff --git a/app/src/main/java/jp/juggler/subwaytooter/ViewHolderHeaderProfile.kt b/app/src/main/java/jp/juggler/subwaytooter/ViewHolderHeaderProfile.kt index 90e313a9..33ad5dda 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ViewHolderHeaderProfile.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ViewHolderHeaderProfile.kt @@ -155,7 +155,14 @@ internal class ViewHolderHeaderProfile( btnStatusCount.textColor = contentColor btnFollowing.textColor = contentColor btnFollowers.textColor = contentColor - Styler.setIconDrawableId(activity, btnMore, R.drawable.btn_more, color = contentColor) + + Styler.setIconDrawableId( + activity, + btnMore, + R.drawable.btn_more, + color = contentColor, + alphaMultiplier = Styler.boost_alpha + ) val acctColor = column.getAcctColor(activity) tvCreated.textColor = acctColor @@ -293,8 +300,6 @@ internal class ViewHolderHeaderProfile( emojiMapProfile = who.profile_emojis ) - - val nameTypeface = ActMain.timeline_font_bold val valueTypeface = ActMain.timeline_font diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/Utils.kt b/app/src/main/java/jp/juggler/subwaytooter/util/Utils.kt index 01b5c679..ced44905 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/util/Utils.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/util/Utils.kt @@ -1068,3 +1068,13 @@ fun Matcher.groupOrNull( g:Int):String? = null } +// colorARGB.applyAlphaMultiplier(0.5f) でalpha値が半分になったARGB値を得る +fun Int.applyAlphaMultiplier(alphaMultiplier: Float? = null):Int{ + return if( alphaMultiplier ==null ){ + this + }else{ + val rgb = (this and 0xffffff) + val alpha = clipRange(0,255,((this ushr 24).toFloat() * alphaMultiplier +0.5f ).toInt()) + return rgb or (alpha shl 24) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v21/btn_bg_ddd.xml b/app/src/main/res/drawable/bg_column_header.xml similarity index 100% rename from app/src/main/res/drawable-v21/btn_bg_ddd.xml rename to app/src/main/res/drawable/bg_column_header.xml diff --git a/app/src/main/res/drawable/btn_bg_ddd.xml b/app/src/main/res/drawable/btn_bg_ddd.xml deleted file mode 100644 index e45f1b71..00000000 --- a/app/src/main/res/drawable/btn_bg_ddd.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/act_app_setting.xml b/app/src/main/res/layout/act_app_setting.xml index 871f5b55..4ff4869c 100644 --- a/app/src/main/res/layout/act_app_setting.xml +++ b/app/src/main/res/layout/act_app_setting.xml @@ -1181,7 +1181,7 @@ android:id="@+id/ivFooterMenu" android:layout_width="48dp" android:layout_height="48dp" - android:background="@drawable/btn_bg_ddd" + android:background="@drawable/bg_button_cw" android:importantForAccessibility="no" app:srcCompat="?attr/ic_hamburger" /> @@ -1239,7 +1239,7 @@ android:id="@+id/ivFooterToot" android:layout_width="48dp" android:layout_height="48dp" - android:background="@drawable/btn_bg_ddd" + android:background="@drawable/bg_button_cw" android:contentDescription="@string/toot" app:srcCompat="?attr/ic_edit" /> @@ -1583,6 +1583,23 @@ + + + + + + + + @@ -109,7 +109,7 @@ android:id="@+id/btnToot" android:layout_width="48dp" android:layout_height="48dp" - android:background="@drawable/btn_bg_ddd" + android:background="@drawable/bg_button_cw" android:contentDescription="@string/toot" app:srcCompat="?attr/ic_edit" /> @@ -140,7 +140,7 @@ android:id="@+id/btnQuickToot" android:layout_width="48dp" android:layout_height="48dp" - android:background="@drawable/btn_bg_ddd" + android:background="@drawable/bg_button_cw" android:contentDescription="@string/post" app:srcCompat="?attr/btn_post" /> diff --git a/app/src/main/res/layout/lv_column_strip.xml b/app/src/main/res/layout/lv_column_strip.xml index 4466a1b1..4adeeee6 100644 --- a/app/src/main/res/layout/lv_column_strip.xml +++ b/app/src/main/res/layout/lv_column_strip.xml @@ -5,7 +5,7 @@ android:layout_width="48dp" android:layout_height="48dp" android:layout_weight="1" - android:background="@drawable/btn_bg_ddd" + android:background="@drawable/bg_column_header" android:gravity="center" android:orientation="vertical" > diff --git a/app/src/main/res/layout/page_column.xml b/app/src/main/res/layout/page_column.xml index 503d3908..93727051 100644 --- a/app/src/main/res/layout/page_column.xml +++ b/app/src/main/res/layout/page_column.xml @@ -18,7 +18,7 @@ android:id="@+id/llColumnHeader" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/btn_bg_ddd" + android:background="@drawable/bg_column_header" android:orientation="vertical" android:paddingBottom="3dp" android:paddingEnd="12dp" diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8d7715e5..4ee43c4f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -793,5 +793,6 @@ 送り先: 引用Renoteにする アプリ \"%1$s\" はミュートされます。よろしいですか? + ブーストボタンのアルファ不透明度(単位:%。アプリの再起動が必要。本文テキスト色のアルファ値の影響も受けます) diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 3b442bc8..1fc80db1 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -7,6 +7,10 @@ + + + + @@ -56,6 +60,9 @@ + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d1ca8f10..852d204b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,6 +4,7 @@ #80000000 #ff666666 #ff333333 + #616161 #80000000 #80000000 @@ -23,10 +24,12 @@ #bee6ff #cccccc - #cccccc + #fff + #cccccc #cccccc + #eee #C0FFFFFF @@ -55,7 +58,7 @@ #66FFFFFF #66FFFFFF #66FFFFFF - + #e4e4e4 #ccFFFFFF @@ -72,6 +75,7 @@ #333 #333 + #333 #333 #222 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dbf3441d..3c24beb4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -812,5 +812,6 @@ To: Use \"Quoted Renote\" Application \"%1$s\" will be muted. Are you sure ? + Boost button alpha opacity (Unit:%. app restart required. also affected of content text alpha.) diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 713c4ebc..0612a1a2 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -43,6 +43,8 @@ @color/Light_colorRegexFilterError @color/Light_colorPostFormBackground @color/Light_colorColumnStripBackground + @color/Light_colorColumnHeaderName + @color/Light_colorButtonBg @drawable/btn_attachment @drawable/btn_boost @@ -167,6 +169,8 @@ @color/Dark_colorRegexFilterError @color/Dark_colorPostFormBackground @color/Dark_colorColumnStripBackground + @color/Dark_colorColumnHeaderName + @color/Dark_colorButtonBg @drawable/btn_attachment_dark @drawable/btn_boost_dark