mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
fix quest dialog. Fixes #872
This commit is contained in:
parent
27dfb7e342
commit
2cceaea4ad
4 changed files with 36 additions and 27 deletions
22
Habitica/res/layout/row_quest_reward_imageview.xml
Normal file
22
Habitica/res/layout/row_quest_reward_imageview.xml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:background="@drawable/layout_rounded_bg_gray_700"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:layout_marginBottom="4dp">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/imageView"
|
||||||
|
android:layout_width="@dimen/shopitem_image_size"
|
||||||
|
android:layout_height="@dimen/shopitem_image_size"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:scaleType="center" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/titleTextView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginRight="16dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.Shader
|
import android.graphics.Shader
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.net.Uri
|
|
||||||
import android.support.v7.widget.RecyclerView
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.text.Html
|
import android.text.Html
|
||||||
import android.text.method.LinkMovementMethod
|
import android.text.method.LinkMovementMethod
|
||||||
|
|
@ -13,15 +12,7 @@ import android.view.ViewGroup
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import butterknife.ButterKnife
|
|
||||||
import com.facebook.common.executors.CallerThreadExecutor
|
|
||||||
import com.facebook.common.references.CloseableReference
|
|
||||||
import com.facebook.datasource.DataSource
|
|
||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
|
||||||
import com.facebook.drawee.view.SimpleDraweeView
|
import com.facebook.drawee.view.SimpleDraweeView
|
||||||
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber
|
|
||||||
import com.facebook.imagepipeline.image.CloseableImage
|
|
||||||
import com.facebook.imagepipeline.request.ImageRequestBuilder
|
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand
|
||||||
import com.habitrpg.android.habitica.extensions.backgroundCompat
|
import com.habitrpg.android.habitica.extensions.backgroundCompat
|
||||||
|
|
@ -36,7 +27,6 @@ import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||||
import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder
|
import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder
|
||||||
import com.habitrpg.android.habitica.ui.viewHolders.ShopItemViewHolder
|
import com.habitrpg.android.habitica.ui.viewHolders.ShopItemViewHolder
|
||||||
import kotlinx.android.synthetic.main.shop_header.*
|
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import rx.android.schedulers.AndroidSchedulers
|
import rx.android.schedulers.AndroidSchedulers
|
||||||
|
|
@ -238,14 +228,12 @@ class ShopRecyclerAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
|
|
||||||
internal class ShopHeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
internal class ShopHeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||||
|
|
||||||
private val context: Context
|
|
||||||
private val descriptionView: TextView by bindView(itemView, R.id.descriptionView)
|
private val descriptionView: TextView by bindView(itemView, R.id.descriptionView)
|
||||||
private val sceneView: SimpleDraweeView by bindView(itemView, R.id.sceneView)
|
private val sceneView: SimpleDraweeView by bindView(itemView, R.id.sceneView)
|
||||||
private val backgroundView: ImageView by bindView(itemView, R.id.backgroundView)
|
private val backgroundView: ImageView by bindView(itemView, R.id.backgroundView)
|
||||||
private val namePlate: TextView by bindView(itemView, R.id.namePlate)
|
private val namePlate: TextView by bindView(itemView, R.id.namePlate)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
context = itemView.context
|
|
||||||
descriptionView.movementMethod = LinkMovementMethod.getInstance()
|
descriptionView.movementMethod = LinkMovementMethod.getInstance()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -256,9 +244,9 @@ class ShopRecyclerAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||||
|
|
||||||
DataBindingUtils.loadImage(shop.identifier + "_background" + shopSpriteSuffix, {
|
DataBindingUtils.loadImage(shop.identifier + "_background" + shopSpriteSuffix, {
|
||||||
val aspectRatio = it.width / it.height.toFloat()
|
val aspectRatio = it.width / it.height.toFloat()
|
||||||
val height = context.resources.getDimension(R.dimen.shop_height).toInt()
|
val height = itemView.context.resources.getDimension(R.dimen.shop_height).toInt()
|
||||||
val width = Math.round(height * aspectRatio)
|
val width = Math.round(height * aspectRatio)
|
||||||
val drawable = BitmapDrawable(context.resources, Bitmap.createScaledBitmap(it, width, height, false))
|
val drawable = BitmapDrawable(itemView.context.resources, Bitmap.createScaledBitmap(it, width, height, false))
|
||||||
drawable.tileModeX = Shader.TileMode.REPEAT
|
drawable.tileModeX = Shader.TileMode.REPEAT
|
||||||
Observable.just(drawable)
|
Observable.just(drawable)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|
|
||||||
|
|
@ -100,8 +100,7 @@ public class HabiticaIconsHelper {
|
||||||
int size = scaleSize(40);
|
int size = scaleSize(40);
|
||||||
imageOfExperienceReward = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
|
imageOfExperienceReward = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
|
||||||
Canvas canvas = new Canvas(imageOfExperienceReward);
|
Canvas canvas = new Canvas(imageOfExperienceReward);
|
||||||
canvas.scale(displayDensity, displayDensity);
|
HabiticaIcons.drawExperience(canvas, new RectF(0f, 0f, size, size), HabiticaIcons.ResizingBehavior.AspectFit);
|
||||||
HabiticaIcons.drawExperience(canvas);
|
|
||||||
|
|
||||||
return imageOfExperienceReward;
|
return imageOfExperienceReward;
|
||||||
}
|
}
|
||||||
|
|
@ -114,8 +113,7 @@ public class HabiticaIconsHelper {
|
||||||
int size = scaleSize(40);
|
int size = scaleSize(40);
|
||||||
imageOfGoldReward = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
|
imageOfGoldReward = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
|
||||||
Canvas canvas = new Canvas(imageOfGoldReward);
|
Canvas canvas = new Canvas(imageOfGoldReward);
|
||||||
canvas.scale(displayDensity, displayDensity);
|
HabiticaIcons.drawGold(canvas, new RectF(0f, 0f, size, size), HabiticaIcons.ResizingBehavior.AspectFit);
|
||||||
HabiticaIcons.drawGold(canvas);
|
|
||||||
|
|
||||||
return imageOfGoldReward;
|
return imageOfGoldReward;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.ImageView
|
||||||
import android.widget.RatingBar
|
import android.widget.RatingBar
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.facebook.drawee.view.SimpleDraweeView
|
import com.facebook.drawee.view.SimpleDraweeView
|
||||||
|
|
@ -61,11 +62,9 @@ class PurchaseDialogQuestContent : PurchaseDialogContent {
|
||||||
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||||
|
|
||||||
if (questContent.drop != null && questContent.drop.items != null) {
|
if (questContent.drop != null && questContent.drop.items != null) {
|
||||||
for (item in questContent.drop.items) {
|
questContent.drop.items
|
||||||
if (!item.isOnlyOwner) {
|
.filterNot { it.isOnlyOwner }
|
||||||
addRewardsRow(inflater, item, rewardsList)
|
.forEach { addRewardsRow(inflater, it, rewardsList) }
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var hasOwnerRewards = false
|
var hasOwnerRewards = false
|
||||||
for (item in questContent.drop.items) {
|
for (item in questContent.drop.items) {
|
||||||
|
|
@ -80,8 +79,9 @@ class PurchaseDialogQuestContent : PurchaseDialogContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (questContent.drop.exp > 0) {
|
if (questContent.drop.exp > 0) {
|
||||||
val view = inflater.inflate(R.layout.row_quest_reward, rewardsList, false) as ViewGroup
|
val view = inflater.inflate(R.layout.row_quest_reward_imageview, rewardsList, false) as ViewGroup
|
||||||
val imageView = view.findViewById<SimpleDraweeView>(R.id.imageView)
|
val imageView = view.findViewById<ImageView>(R.id.imageView)
|
||||||
|
imageView.scaleType = ImageView.ScaleType.CENTER
|
||||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward())
|
imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward())
|
||||||
val titleTextView = view.findViewById<TextView>(R.id.titleTextView)
|
val titleTextView = view.findViewById<TextView>(R.id.titleTextView)
|
||||||
titleTextView.text = context.getString(R.string.experience_reward, questContent.drop.exp)
|
titleTextView.text = context.getString(R.string.experience_reward, questContent.drop.exp)
|
||||||
|
|
@ -89,8 +89,9 @@ class PurchaseDialogQuestContent : PurchaseDialogContent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (questContent.drop.gp > 0) {
|
if (questContent.drop.gp > 0) {
|
||||||
val view = inflater.inflate(R.layout.row_quest_reward, rewardsList, false) as ViewGroup
|
val view = inflater.inflate(R.layout.row_quest_reward_imageview, rewardsList, false) as ViewGroup
|
||||||
val imageView = view.findViewById<SimpleDraweeView>(R.id.imageView)
|
val imageView = view.findViewById<ImageView>(R.id.imageView)
|
||||||
|
imageView.scaleType = ImageView.ScaleType.CENTER
|
||||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfExperienceReward())
|
imageView.setImageBitmap(HabiticaIconsHelper.imageOfExperienceReward())
|
||||||
val titleTextView = view.findViewById<TextView>(R.id.titleTextView)
|
val titleTextView = view.findViewById<TextView>(R.id.titleTextView)
|
||||||
titleTextView.text = context.getString(R.string.gold_reward, questContent.drop.gp)
|
titleTextView.text = context.getString(R.string.gold_reward, questContent.drop.gp)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue