mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-22 13:48:55 +00:00
tweak new alert design
This commit is contained in:
parent
e5dd85e5ea
commit
f66d7c8ab9
12 changed files with 140 additions and 40 deletions
52
Habitica/res/anim/button_state_list_animator.xml
Normal file
52
Habitica/res/anim/button_state_list_animator.xml
Normal 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>
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
7
Habitica/res/layout/dialog_habitica_primary_button.xml
Normal file
7
Habitica/res/layout/dialog_habitica_primary_button.xml
Normal 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>
|
||||
8
Habitica/res/layout/dialog_habitica_secondary_button.xml
Normal file
8
Habitica/res/layout/dialog_habitica_secondary_button.xml
Normal 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
<item name="windowNoTitle">true</item>
|
||||
|
||||
<!-- ...and here we setting appcompat’s 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">
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue