tweak new alert design

This commit is contained in:
Phillip Thelen 2019-05-21 12:28:16 +02:00
parent e5dd85e5ea
commit f66d7c8ab9
12 changed files with 140 additions and 40 deletions

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_enabled="true">
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="100"
android:valueTo="4dp"
android:valueType="floatType"/>
<objectAnimator android:propertyName="elevation"
android:duration="0"
android:valueTo="2dp"
android:valueType="floatType"/>
</set>
</item>
<!-- base state -->
<item android:state_enabled="true">
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="100"
android:valueTo="0"
android:startDelay="100"
android:valueType="floatType"/>
<objectAnimator android:propertyName="elevation"
android:duration="0"
android:valueTo="2dp"
android:valueType="floatType" />
</set>
</item>
<item>
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="0"
android:valueTo="0"
android:valueType="floatType"/>
<objectAnimator android:propertyName="elevation"
android:duration="0"
android:valueTo="0"
android:valueType="floatType"/>
</set>
</item>
</selector>

View file

@ -32,7 +32,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/create"
style="@style/HabiticaButton"
style="@style/HabiticaButton.Borderless"
android:textColor="@color/brand_400"
android:paddingEnd="@dimen/spacing_large"
android:paddingStart="@dimen/spacing_large"

View file

@ -27,6 +27,8 @@
android:paddingBottom="@dimen/spacing_large"
style="@style/Headline6"
tools:text="This is the title"
android:visibility="gone"
tools:visibility="visible"
/>
<TextView

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/HabiticaButton.Primary">
</Button>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/HabiticaButton.Borderless"
android:textColor="@color/brand_400">
</Button>

View file

@ -2,7 +2,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
android:background="@drawable/alert_dialog_background"
android:paddingTop="26dp"
android:paddingBottom="26dp">
<TextView
android:id="@+id/titleTextView"
android:layout_width="match_parent"
@ -10,8 +12,13 @@
android:text="@string/welcome_back"
android:gravity="center"
android:padding="12dp"
style="@style/Title1"
android:background="@color/gray_700"/>
style="@style/Title1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/yesterdaililes_prompt"
android:layout_gravity="center"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -22,17 +29,17 @@
android:padding="8dp"
android:background="@color/gray_700"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/yesterdaililes_prompt" />
<LinearLayout
android:id="@+id/yesterdailies_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="8dp"/>
android:orientation="vertical"/>
</LinearLayout>
</ScrollView>
<Button
android:layout_width="wrap_content"
android:layout_gravity="center"
style="@style/HabiticaButton.Primary"
android:text="@string/start_day"/>
</LinearLayout>

View file

@ -64,7 +64,7 @@
android:background="@drawable/snackbar_right_bg"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:layout_marginRight="1dp"
android:layout_marginEnd="1dp"
android:layout_marginTop="1dp"
android:layout_marginBottom="1dp"
android:visibility="gone"

View file

@ -617,7 +617,7 @@
<string name="leave_quest_confirmation">Are you sure you want to leave the active quest? All your quest progress will be lost.</string>
<string name="number_participants">%1$d Participants</string>
<string name="welcome_back">Welcome Back</string>
<string name="yesterdaililes_prompt">Did you do any of these Dailies yesterday?</string>
<string name="yesterdaililes_prompt">Check off any Dailies you did yesterday:</string>
<string name="start_day">Start My Day</string>
<string name="leave_party_confirmation">Are you sure you want to leave the Party?</string>
<string name="nextPrizeUnlocksIn" formatted="false">Next Prize in %d Check-ins</string>

View file

@ -16,6 +16,9 @@
<item name="windowNoTitle">true</item>
<!-- ...and here we setting appcompats color theming attrs -->
<item name="colorPrimary">@color/brand</item>
<item name="colorPrimaryDark">@color/brand_50</item>
<item name="colorAccent">@color/brand_400</item>
<item name="android:colorPrimary">@color/brand</item>
<item name="android:colorPrimaryDark">@color/brand_50</item>
<item name="android:colorAccent">@color/brand_400</item>
@ -196,6 +199,10 @@
<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/brand_100</item>
</style>
<style name="HabiticaAlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/brand_100</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
@ -422,7 +429,20 @@
<item name="android:orientation">vertical</item>
</style>
<style name="HabiticaButton" parent="@style/Widget.AppCompat.Button.Borderless">
<style name="HabiticaButton" parent="@style/Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">@string/font_family_medium</item>
<item name="android:minHeight">@dimen/button_height</item>
<item name="android:textColor">@color/white</item>
<item name="android:shadowColor">@color/gray_400</item>
<item name="android:layout_height">@dimen/button_height</item>
<item name="android:paddingStart">@dimen/spacing_large</item>
<item name="android:paddingEnd">@dimen/spacing_large</item>
<item name="android:minWidth">147dp</item>
</style>
<style name="HabiticaButton.Borderless" parent="@style/Widget.AppCompat.Button.Borderless">
<item name="android:textAllCaps">false</item>
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">@string/font_family_medium</item>
@ -430,6 +450,14 @@
<item name="android:shadowColor">@color/transparent</item>
<item name="android:textColor">@color/white</item>
<item name="android:layout_height">@dimen/button_height</item>
<item name="android:paddingStart">@dimen/spacing_large</item>
<item name="android:paddingEnd">@dimen/spacing_large</item>
<item name="android:minWidth">147dp</item>
</style>
<style name="HabiticaButton.Primary" parent="HabiticaButton">
<item name="android:background">@drawable/button_background_primary</item>
<item name="android:text">?textColorPrimaryDark</item>
</style>
<style name="HabiticaButton.Gray" parent="HabiticaButton">

View file

@ -19,7 +19,6 @@ import android.view.Window
import android.view.WindowManager
import android.view.inputmethod.EditorInfo
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.content.edit
import androidx.preference.PreferenceManager
@ -576,7 +575,7 @@ class LoginActivity : BaseActivity(), Consumer<UserAuthResponse> {
val alertDialog = HabiticaAlertDialog(this)
alertDialog.setTitle(R.string.forgot_password_title)
alertDialog.setMessage(R.string.forgot_password_description)
alertDialog.setView(input)
alertDialog.setAdditionalContentView(input)
alertDialog.addButton(R.string.send, true) { _, _ ->
userRepository.sendPasswordResetEmail(input.text.toString()).subscribe(Consumer { showPasswordEmailConfirmation() }, RxErrorHandler.handleEmptyError())
}

View file

@ -2,22 +2,25 @@ package com.habitrpg.android.habitica.ui.fragments.social
import android.content.Context
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import android.view.*
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.TextView
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.components.AppComponent
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.extensions.notNull
import com.habitrpg.android.habitica.helpers.MainNavigationController
import com.habitrpg.android.habitica.helpers.AppConfigManager
import com.habitrpg.android.habitica.helpers.MainNavigationController
import com.habitrpg.android.habitica.helpers.RxErrorHandler
import com.habitrpg.android.habitica.models.social.ChatMessage
import com.habitrpg.android.habitica.modules.AppModule
import com.habitrpg.android.habitica.ui.AvatarView
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
import com.habitrpg.android.habitica.ui.views.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.social.UsernameLabel
import io.reactivex.functions.Consumer
import io.realm.RealmResults
@ -82,18 +85,16 @@ class InboxFragment : BaseMainFragment(), androidx.swiperefreshlayout.widget.Swi
this.chooseRecipientDialogView = this.activity?.layoutInflater?.inflate(R.layout.dialog_choose_message_recipient, null)
this.activity.notNull { thisActivity ->
val alert = AlertDialog.Builder(thisActivity)
.setTitle(getString(R.string.choose_recipient_title))
.setPositiveButton(getString(R.string.action_continue)) { _, _ ->
val alert = HabiticaAlertDialog(thisActivity)
alert.setTitle(getString(R.string.choose_recipient_title))
alert.addButton(getString(R.string.action_continue), true) { _, _ ->
val uuidEditText = chooseRecipientDialogView?.findViewById<View>(R.id.uuidEditText) as? EditText
openInboxMessages(uuidEditText?.text?.toString() ?: "", "")
}
.setNeutralButton(getString(R.string.action_cancel)) { dialog, _ ->
alert.addButton(getString(R.string.action_cancel), false) { dialog, _ ->
thisActivity.dismissKeyboard()
dialog.cancel()
}
.create()
alert.setView(chooseRecipientDialogView)
alert.setAdditionalContentView(chooseRecipientDialogView)
alert.show()
}

View file

@ -1,7 +1,6 @@
package com.habitrpg.android.habitica.ui.views
import android.content.Context
import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -9,15 +8,14 @@ import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.extensions.dpToPx
import com.habitrpg.android.habitica.extensions.getThemeColor
import com.habitrpg.android.habitica.extensions.inflate
import com.habitrpg.android.habitica.extensions.layoutInflater
import com.habitrpg.android.habitica.extensions.setScaledPadding
import java.lang.ref.WeakReference
open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
open class HabiticaAlertDialog(context: Context) : AlertDialog(context, R.style.HabiticaAlertDialogTheme) {
private val view: LinearLayout = LayoutInflater.from(context).inflate(R.layout.dialog_habitica_base, null) as LinearLayout
private var titleTextView: TextView
@ -36,6 +34,11 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
}
override fun setTitle(title: CharSequence?) {
if (title != null) {
titleTextView.visibility = View.VISIBLE
} else {
titleTextView.visibility = View.GONE
}
titleTextView.text = title
}
@ -72,8 +75,6 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
contentView.forceLayout()
}
fun getContentView(): View? = additionalContentView
fun addButton(stringRes: Int, isPrimary: Boolean, function: ((HabiticaAlertDialog, Int) -> Unit)? = null) {
@ -81,17 +82,12 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context) {
}
fun addButton(string: String, isPrimary: Boolean, function: ((HabiticaAlertDialog, Int) -> Unit)? = null) {
val button = Button(context)
button.text = string
button.transformationMethod = null
button.textSize = 16f
if (isPrimary) {
button.background = context.getDrawable(R.drawable.button_background_primary)
button.setTextColor(context.getThemeColor(R.attr.textColorPrimaryDark))
val button: Button = if (isPrimary) {
buttonsWrapper.inflate(R.layout.dialog_habitica_primary_button) as Button
} else {
button.background = ColorDrawable(ContextCompat.getColor(context, R.color.transparent))
button.setTextColor(ContextCompat.getColor(context, R.color.brand_400))
buttonsWrapper.inflate(R.layout.dialog_habitica_secondary_button) as Button
}
button.text = string
val weakThis = WeakReference<HabiticaAlertDialog>(this)
val buttonIndex = buttonsWrapper.childCount
button.setOnClickListener {