mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-21 21:29:00 +00:00
Rewrite sprite rendering to not make things blurry
This commit is contained in:
parent
409c3f6a34
commit
67dd4bda78
80 changed files with 254 additions and 203 deletions
|
|
@ -22,7 +22,7 @@
|
|||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="66dp">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/achievement_icon"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="56dp"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<RelativeLayout
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="86dp">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/achievement_icon"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="56dp"
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
android:layout_height="158dp"
|
||||
android:layout_centerInParent="true"
|
||||
android:src="@drawable/circle_gray_700" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_width="136dp"
|
||||
android:layout_height="136dp"
|
||||
|
|
|
|||
|
|
@ -350,7 +350,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="#" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/current_pet_drawee"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"/>
|
||||
|
|
@ -369,7 +369,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="#" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/current_mount_drawee"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"/>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="56dp"
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@
|
|||
android:layout_width="86dp"
|
||||
android:layout_height="68dp"
|
||||
android:layout_gravity="center">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/hatchingPotion_view"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/egg_view"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="72dp"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<FrameLayout
|
||||
android:layout_width="76dp"
|
||||
android:layout_height="76dp">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="68dp"
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
android:layout_width="41dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/sparkles_left" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="56dp"
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"/>
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
android:layout_height="80dp"
|
||||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:layout_marginEnd="@dimen/spacing_large">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/egg_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:background="@drawable/layout_rounded_bg_window">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/hatchingPotion_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size"
|
||||
android:id="@+id/imageView"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_height="@dimen/shopitem_image_size"
|
||||
android:layout_width="@dimen/shopitem_image_size" />
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentStart="true">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/egg_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:layout_marginEnd="13dp"
|
||||
android:layout_marginStart="@dimen/spacing_small">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/pet_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentStart="true">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/hatchingPotion_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
tools:parentTag="LinearLayout"
|
||||
tools:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size" />
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
tools:parentTag="LinearLayout"
|
||||
tools:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size" />
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
tools:parentTag="LinearLayout"
|
||||
tools:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size" />
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
tools:parentTag="android.widget.LinearLayout">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:layout_width="@dimen/customization_width"
|
||||
android:layout_height="@dimen/customization_width"
|
||||
android:id="@+id/imageView"
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
tools:background="?attr/colorContentBackground"
|
||||
tools:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size" />
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/sparkles_left" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/achievement_view"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="52dp"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
android:layout_height="70dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="@drawable/layout_rounded_bg_content">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
android:gravity="center_vertical"
|
||||
android:layout_marginBottom="@dimen/spacing_medium"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/quest_scroll_image_view"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size" />
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:padding="@dimen/spacing_medium"
|
||||
android:layout_marginBottom="@dimen/spacing_medium">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/quest_image_view"
|
||||
android:layout_width="@dimen/quest_image_width"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
>
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/quest_scroll_image_view"
|
||||
android:layout_width="63dp"
|
||||
android:layout_height="63dp"
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/sub_benefits_mystery_item_icon"
|
||||
android:layout_width="68dp"
|
||||
android:layout_height="68dp"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginEnd="@dimen/row_padding">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
android:layout_gravity="center"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
tools:parentTag="android.widget.LinearLayout">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
style="@style/RowWrapper"
|
||||
android:clickable="true">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
android:layout_width="68dp"
|
||||
android:layout_height="66dp"
|
||||
android:layout_gravity="center">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="68dp"
|
||||
android:layout_height="68dp"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
android:background="@drawable/layout_rounded_bg_window"
|
||||
android:orientation="vertical"
|
||||
android:layout_centerInParent="true">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="68dp"
|
||||
android:layout_height="68dp"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/pet_image_width" android:layout_height="@dimen/pet_image_height"
|
||||
android:layout_gravity="center">
|
||||
<ImageView android:id="@+id/pet_imageview"
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/pet_imageview"
|
||||
android:layout_width="68dp"
|
||||
android:layout_height="68dp"
|
||||
android:layout_gravity="center" />
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
android:layout_width="68dp"
|
||||
android:layout_height="58dp"
|
||||
android:layout_gravity="center">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="68dp"
|
||||
android:layout_height="68dp"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/achievement_drawee"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="56dp"
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
</LinearLayout>
|
||||
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/gear_drawee"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="true">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/questImageView"
|
||||
android:layout_width="219dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
android:paddingStart="@dimen/spacing_large"
|
||||
android:paddingEnd="@dimen/spacing_large"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/questFlourishesImageView"
|
||||
android:layout_width="310dp"
|
||||
android:layout_height="219dp"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:gravity="center_vertical"
|
||||
android:layout_marginBottom="4dp">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
android:orientation="vertical"
|
||||
android:background="@drawable/layout_rounded_bg_shopitem"
|
||||
android:layout_centerInParent="true">
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/shopitem_image_size"
|
||||
android:layout_height="@dimen/shopitem_image_size"
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="4dp">
|
||||
|
||||
<ImageView
|
||||
<com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
android:id="@+id/skill_image"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ import com.habitrpg.android.habitica.models.inventory.Pet
|
|||
import com.habitrpg.android.habitica.models.responses.FeedResponse
|
||||
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import com.habitrpg.android.habitica.ui.views.SnackbarActivity
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
|
|
@ -36,12 +38,9 @@ constructor(
|
|||
null
|
||||
) as? FrameLayout
|
||||
val mountImageView =
|
||||
mountWrapper?.findViewById(R.id.pet_imageview) as? ImageView
|
||||
mountWrapper?.findViewById(R.id.pet_imageview) as? PixelArtView
|
||||
|
||||
DataBindingUtils.loadImage(
|
||||
mountImageView,
|
||||
"Mount_Icon_" + requestValues.pet.key
|
||||
)
|
||||
mountImageView?.loadImage("Mount_Icon_" + requestValues.pet.key)
|
||||
val dialog = HabiticaAlertDialog(requestValues.context)
|
||||
dialog.setTitle(
|
||||
requestValues.context.getString(
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import android.graphics.Bitmap
|
|||
import android.graphics.Canvas
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.executors.PostExecutionThread
|
||||
|
|
@ -14,7 +13,8 @@ import com.habitrpg.android.habitica.models.inventory.Egg
|
|||
import com.habitrpg.android.habitica.models.inventory.HatchingPotion
|
||||
import com.habitrpg.android.habitica.models.user.Items
|
||||
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
import javax.inject.Inject
|
||||
|
|
@ -27,9 +27,9 @@ constructor(
|
|||
override fun buildUseCaseObservable(requestValues: RequestValues): Flowable<Items> {
|
||||
return inventoryRepository.hatchPet(requestValues.egg, requestValues.potion) {
|
||||
val petWrapper = View.inflate(requestValues.context, R.layout.pet_imageview, null) as? FrameLayout
|
||||
val petImageView = petWrapper?.findViewById(R.id.pet_imageview) as? ImageView
|
||||
val petImageView = petWrapper?.findViewById(R.id.pet_imageview) as? PixelArtView
|
||||
|
||||
DataBindingUtils.loadImage(petImageView, "stable_Pet-" + requestValues.egg.key + "-" + requestValues.potion.key)
|
||||
petImageView?.loadImage("stable_Pet-" + requestValues.egg.key + "-" + requestValues.potion.key)
|
||||
val potionName = requestValues.potion.text
|
||||
val eggName = requestValues.egg.text
|
||||
val dialog = HabiticaAlertDialog(requestValues.context)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.habitrpg.android.habitica.interactors
|
|||
import android.app.Activity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.lifecycle.LifecycleCoroutineScope
|
||||
import com.google.firebase.analytics.FirebaseAnalytics
|
||||
|
|
@ -14,8 +13,9 @@ import com.habitrpg.android.habitica.models.notifications.ChallengeWonData
|
|||
import com.habitrpg.android.habitica.models.notifications.FirstDropData
|
||||
import com.habitrpg.android.habitica.models.notifications.LoginIncentiveData
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import com.habitrpg.android.habitica.ui.views.SnackbarActivity
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.AchievementDialog
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.FirstDropDialog
|
||||
|
|
@ -84,12 +84,12 @@ class ShowNotificationInteractor(
|
|||
val factory = LayoutInflater.from(activity)
|
||||
val view = factory.inflate(R.layout.dialog_login_incentive, null)
|
||||
|
||||
val imageView = view.findViewById(R.id.imageView) as? ImageView
|
||||
val imageView = view.findViewById(R.id.imageView) as? PixelArtView
|
||||
var imageKey = notificationData.rewardKey?.get(0)
|
||||
if (imageKey?.contains("armor") == true) {
|
||||
imageKey = "slim_$imageKey"
|
||||
}
|
||||
DataBindingUtils.loadImage(imageView, imageKey)
|
||||
imageView?.loadImage(imageKey)
|
||||
|
||||
val youEarnedMessage = activity.getString(R.string.checkInRewardEarned, notificationData.rewardText)
|
||||
val youEarnedTexView = view.findViewById(R.id.you_earned_message) as? TextView
|
||||
|
|
|
|||
|
|
@ -9,15 +9,16 @@ import android.widget.LinearLayout
|
|||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class ItemDetailDialog(context: Context) : AlertDialog(context) {
|
||||
|
||||
private val itemImageView: ImageView
|
||||
private val contentTextView: TextView
|
||||
private val priceTextView: TextView
|
||||
private val currencyImageView: ImageView
|
||||
private val itemImageView = PixelArtView(context)
|
||||
private val contentTextView = TextView(context, null)
|
||||
private val priceTextView = TextView(context, null)
|
||||
private val currencyImageView = ImageView(context)
|
||||
|
||||
init {
|
||||
|
||||
|
|
@ -26,7 +27,6 @@ class ItemDetailDialog(context: Context) : AlertDialog(context) {
|
|||
contentViewLayout.orientation = LinearLayout.VERTICAL
|
||||
|
||||
// Gear Image
|
||||
itemImageView = ImageView(context)
|
||||
val gearImageLayoutParams = LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
|
|
@ -39,7 +39,6 @@ class ItemDetailDialog(context: Context) : AlertDialog(context) {
|
|||
itemImageView.visibility = View.GONE
|
||||
|
||||
// Gear Description
|
||||
contentTextView = TextView(context, null)
|
||||
contentTextView.setPadding(16, 0, 16, 0)
|
||||
contentTextView.visibility = View.GONE
|
||||
|
||||
|
|
@ -57,10 +56,8 @@ class ItemDetailDialog(context: Context) : AlertDialog(context) {
|
|||
goldPriceLayout.gravity = Gravity.CENTER_HORIZONTAL or Gravity.CENTER_VERTICAL
|
||||
|
||||
// Price View
|
||||
priceTextView = TextView(context)
|
||||
priceTextView.setPadding(10, 0, 0, 0)
|
||||
|
||||
currencyImageView = ImageView(context)
|
||||
currencyImageView.minimumHeight = 50
|
||||
currencyImageView.minimumWidth = 50
|
||||
currencyImageView.setPadding(0, 0, 5, 0)
|
||||
|
|
@ -104,7 +101,7 @@ class ItemDetailDialog(context: Context) : AlertDialog(context) {
|
|||
|
||||
fun setImage(imageName: String) {
|
||||
itemImageView.visibility = View.VISIBLE
|
||||
DataBindingUtils.loadImage(itemImageView, imageName)
|
||||
itemImageView.loadImage(imageName)
|
||||
}
|
||||
|
||||
fun setBuyListener(listener: DialogInterface.OnClickListener) {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import com.habitrpg.android.habitica.extensions.fromHtml
|
|||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
|
||||
class AdventureGuideActivity : BaseActivity() {
|
||||
private lateinit var binding: ActivityAdventureGuideBinding
|
||||
|
|
@ -107,7 +107,7 @@ class AdventureGuideActivity : BaseActivity() {
|
|||
} else {
|
||||
"achievement-unearned2x"
|
||||
}
|
||||
DataBindingUtils.loadImage(itemBinding.iconView, iconName)
|
||||
itemBinding.iconView.loadImage(iconName)
|
||||
if (achievement.earned) {
|
||||
itemBinding.titleView.paintFlags = itemBinding.titleView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
|
||||
itemBinding.titleView.setTextColor(ContextCompat.getColor(this, R.color.text_ternary))
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaBottomSheetDialog
|
|||
import com.plattysoft.leonids.ParticleSystem
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
class ArmoireActivity: BaseActivity() {
|
||||
|
|
@ -192,7 +193,7 @@ class ArmoireActivity: BaseActivity() {
|
|||
}
|
||||
|
||||
fun configure(type: String, key: String, text: String, value: String? = "") {
|
||||
binding.titleView.text = text
|
||||
binding.titleView.text = text.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }
|
||||
binding.equipButton.visibility = if (type == "gear") View.VISIBLE else View.GONE
|
||||
when (type) {
|
||||
"gear" -> {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ import com.habitrpg.android.habitica.ui.helpers.loadImage
|
|||
import com.habitrpg.android.habitica.ui.helpers.setMarkdown
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayType
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -316,7 +317,7 @@ class FullProfileActivity : BaseActivity() {
|
|||
private fun addEquipmentRow(table: TableLayout, gearKey: String?, text: String?, stats: String?) {
|
||||
val gearRow = layoutInflater.inflate(R.layout.profile_gear_tablerow, table, false) as? TableRow
|
||||
|
||||
val draweeView = gearRow?.findViewById<ImageView>(R.id.gear_drawee)
|
||||
val draweeView = gearRow?.findViewById<PixelArtView>(R.id.gear_drawee)
|
||||
|
||||
draweeView?.loadImage("shop_$gearKey")
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.ui.adapter
|
|||
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
|
@ -12,7 +11,8 @@ import com.habitrpg.android.habitica.databinding.AchievementSectionHeaderBinding
|
|||
import com.habitrpg.android.habitica.extensions.inflate
|
||||
import com.habitrpg.android.habitica.models.Achievement
|
||||
import com.habitrpg.android.habitica.models.QuestAchievement
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.AchievementDetailDialog
|
||||
|
||||
class AchievementsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
|
|
@ -75,7 +75,7 @@ class AchievementsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||
private var achievement: Achievement? = null
|
||||
|
||||
private val achievementContainer: ViewGroup?
|
||||
private val achievementIconView: ImageView
|
||||
private val achievementIconView: PixelArtView
|
||||
private val achievementCountView: TextView
|
||||
private val achievementTitleView: TextView
|
||||
private val achievementDescriptionView: TextView?
|
||||
|
|
@ -96,7 +96,7 @@ class AchievementsAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||
} else {
|
||||
"achievement-unearned2x"
|
||||
}
|
||||
DataBindingUtils.loadImage(achievementIconView, iconName)
|
||||
achievementIconView.loadImage(iconName)
|
||||
achievementTitleView.text = achievement.title
|
||||
achievementDescriptionView?.text = achievement.text
|
||||
if (achievement.optionalCount ?: 0 > 0) {
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@ import com.habitrpg.android.habitica.databinding.CustomizationGridItemBinding
|
|||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.inventory.CustomizationSet
|
||||
import com.habitrpg.android.habitica.models.inventory.Equipment
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import io.reactivex.rxjava3.core.BackpressureStrategy
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
|
|
@ -91,7 +92,7 @@ class CustomizationEquipmentRecyclerViewAdapter : androidx.recyclerview.widget.R
|
|||
|
||||
fun bind(equipment: Equipment) {
|
||||
this.equipment = equipment
|
||||
DataBindingUtils.loadImage(binding.imageView, "shop_" + this.equipment?.key)
|
||||
binding.imageView.loadImage("shop_" + this.equipment?.key)
|
||||
if (equipment.owned == true || equipment.value == 0.0) {
|
||||
binding.buyButton.visibility = View.GONE
|
||||
} else {
|
||||
|
|
@ -115,8 +116,8 @@ class CustomizationEquipmentRecyclerViewAdapter : androidx.recyclerview.widget.R
|
|||
if (equipment?.owned != true && (equipment?.value ?: 0.0) > 0.0) {
|
||||
val dialogContent = LayoutInflater.from(itemView.context).inflate(R.layout.dialog_purchase_customization, null) as LinearLayout
|
||||
|
||||
val imageView = dialogContent.findViewById<ImageView>(R.id.imageView)
|
||||
DataBindingUtils.loadImage(imageView, "shop_" + this.equipment?.key)
|
||||
val imageView = dialogContent.findViewById<PixelArtView>(R.id.imageView)
|
||||
imageView.loadImage("shop_" + this.equipment?.key)
|
||||
|
||||
val priceLabel = dialogContent.findViewById<TextView>(R.id.priceLabel)
|
||||
priceLabel.text = if (equipment?.gearSet == "animal") {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import com.habitrpg.android.habitica.helpers.MainNavigationController
|
|||
import com.habitrpg.android.habitica.models.inventory.Customization
|
||||
import com.habitrpg.android.habitica.models.inventory.CustomizationSet
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog
|
||||
import io.reactivex.rxjava3.core.BackpressureStrategy
|
||||
|
|
@ -148,7 +148,7 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
|
|||
if (customization.type == "background" && customization.identifier == "") {
|
||||
binding.imageView.load(R.drawable.no_background)
|
||||
} else {
|
||||
DataBindingUtils.loadImage(binding.imageView, customization.getIconName(userSize, hairColor))
|
||||
binding.imageView.loadImage(customization.getIconName(userSize, hairColor))
|
||||
}
|
||||
|
||||
if (customization.isUsable(ownedCustomizations.contains(customization.id))) {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.extensions.inflate
|
|||
import com.habitrpg.android.habitica.extensions.isUsingNightModeResources
|
||||
import com.habitrpg.android.habitica.models.Skill
|
||||
import com.habitrpg.android.habitica.models.user.OwnedItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import io.reactivex.rxjava3.core.BackpressureStrategy
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
|
|
@ -125,7 +125,7 @@ class SkillsRecyclerViewAdapter : RecyclerView.Adapter<SkillsRecyclerViewAdapter
|
|||
binding.priceLabel.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
DataBindingUtils.loadImage(binding.skillImage, "shop_" + skill.key)
|
||||
binding.skillImage.loadImage("shop_" + skill.key)
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import com.habitrpg.android.habitica.R
|
|||
import com.habitrpg.android.habitica.databinding.GearListItemBinding
|
||||
import com.habitrpg.android.habitica.models.inventory.Equipment
|
||||
import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import io.reactivex.rxjava3.subjects.PublishSubject
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ class EquipmentRecyclerViewAdapter : BaseRecyclerViewAdapter<Equipment, Equipmen
|
|||
binding.gearIconBackgroundView.background = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_window)
|
||||
}
|
||||
binding.twoHandedView.visibility = if (gear.twoHanded) View.VISIBLE else View.GONE
|
||||
DataBindingUtils.loadImage(binding.gearImage, "shop_" + gear.key)
|
||||
binding.gearImage.loadImage("shop_" + gear.key)
|
||||
|
||||
set(binding.strLabel, binding.strValue, gear.str)
|
||||
set(binding.conLabel, binding.conValue, gear.con)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import com.habitrpg.android.habitica.models.user.OwnedItem
|
|||
import com.habitrpg.android.habitica.models.user.OwnedPet
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu
|
||||
import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.DetailDialog
|
||||
|
|
@ -143,7 +143,7 @@ class ItemRecyclerAdapter(val context: Context, val user: User?) : BaseRecyclerV
|
|||
disabled = !this.canHatch
|
||||
}
|
||||
}
|
||||
DataBindingUtils.loadImage(binding.imageView, imageName)
|
||||
binding.imageView.loadImage(imageName)
|
||||
|
||||
var alpha = 1.0f
|
||||
if (disabled) {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import com.habitrpg.android.habitica.models.inventory.StableSection
|
|||
import com.habitrpg.android.habitica.models.user.OwnedItem
|
||||
import com.habitrpg.android.habitica.models.user.OwnedMount
|
||||
import com.habitrpg.android.habitica.models.user.OwnedPet
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.PetViewHolder
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.PetSuggestHatchDialog
|
||||
|
|
@ -187,11 +187,8 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt
|
|||
this.hasUnlockedPotion = hasUnlockedPotion
|
||||
this.hasMount = hasMount
|
||||
|
||||
DataBindingUtils.loadImage(binding.eggView, "Pet_Egg_${item.animal}")
|
||||
DataBindingUtils.loadImage(
|
||||
binding.hatchingPotionView,
|
||||
"Pet_HatchingPotion_${item.color}"
|
||||
)
|
||||
binding.eggView.loadImage("Pet_Egg_${item.animal}")
|
||||
binding.hatchingPotionView.loadImage("Pet_HatchingPotion_${item.color}")
|
||||
|
||||
binding.eggView.startAnimation(Animations.bobbingAnimation(4f))
|
||||
binding.hatchingPotionView.startAnimation(Animations.bobbingAnimation(-4f))
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.ui.adapter.inventory
|
|||
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
|
|
@ -25,6 +24,7 @@ import com.habitrpg.android.habitica.ui.helpers.loadImage
|
|||
import com.habitrpg.android.habitica.ui.viewHolders.MountViewHolder
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.PetViewHolder
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import io.reactivex.rxjava3.core.BackpressureStrategy
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
import io.reactivex.rxjava3.subjects.PublishSubject
|
||||
|
|
@ -192,7 +192,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
|||
internal inner class StableViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
|
||||
private var animal: Animal? = null
|
||||
|
||||
private val imageView: ImageView = itemView.findViewById(R.id.imageView)
|
||||
private val imageView: PixelArtView = itemView.findViewById(R.id.imageView)
|
||||
private val titleView: TextView = itemView.findViewById(R.id.titleTextView)
|
||||
private val ownedTextView: TextView = itemView.findViewById(R.id.ownedTextView)
|
||||
|
||||
|
|
|
|||
|
|
@ -26,14 +26,14 @@ import com.habitrpg.android.habitica.models.user.User
|
|||
import com.habitrpg.android.habitica.ui.activities.GiftSubscriptionActivity
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.PromoInfoFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionOptionView
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import javax.inject.Inject
|
||||
|
||||
class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
|
||||
|
||||
|
|
@ -90,7 +90,7 @@ class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
|
|||
compositeSubscription.add(
|
||||
inventoryRepository.getLatestMysteryItem().subscribe(
|
||||
{
|
||||
DataBindingUtils.loadImage(binding?.subBenefitsMysteryItemIcon, "shop_set_mystery_${it.key?.split("_")?.last()}")
|
||||
binding?.subBenefitsMysteryItemIcon?.loadImage("shop_set_mystery_${it.key?.split("_")?.last()}")
|
||||
binding?.subBenefitsMysteryItemText?.text = context?.getString(R.string.subscribe_listitem3_description_new, it.text)
|
||||
},
|
||||
RxErrorHandler.handleEmptyError()
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import com.habitrpg.android.habitica.modules.AppModule
|
|||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import javax.inject.Inject
|
||||
|
|
@ -149,7 +150,7 @@ class QuestDetailFragment : BaseMainFragment<FragmentQuestDetailBinding>() {
|
|||
// We need to do this, because the quest description can contain markdown AND HTML.
|
||||
binding?.descriptionView?.setText(MarkdownParser.parseMarkdown(questContent.notes).toHtml().fromHtml(), TextView.BufferType.SPANNABLE)
|
||||
|
||||
DataBindingUtils.loadImage(binding?.questScrollImageView, "inventory_quest_scroll_" + questContent.key)
|
||||
binding?.questScrollImageView?.loadImage("inventory_quest_scroll_" + questContent.key)
|
||||
}
|
||||
|
||||
private fun setQuestParticipants(participants: List<Member>?) {
|
||||
|
|
|
|||
|
|
@ -35,16 +35,17 @@ import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
|||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemDialogFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.helpers.setMarkdown
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.GroupMemberViewHolder
|
||||
import com.habitrpg.android.habitica.ui.viewmodels.PartyViewModel
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
||||
class PartyDetailFragment : BaseFragment<FragmentPartyDetailBinding>() {
|
||||
|
||||
|
|
@ -218,9 +219,9 @@ class PartyDetailFragment : BaseFragment<FragmentPartyDetailBinding>() {
|
|||
return
|
||||
}
|
||||
binding?.questTitleView?.text = questContent.text
|
||||
DataBindingUtils.loadImage(binding?.questScrollImageView, "inventory_quest_scroll_" + questContent.key)
|
||||
binding?.questScrollImageView?.loadImage("inventory_quest_scroll_" + questContent.key)
|
||||
if (questContent.hasGifImage()) {
|
||||
DataBindingUtils.loadImage(binding?.questImageView, "quest_" + questContent.key, "gif")
|
||||
binding?.questImageView?.loadImage("quest_" + questContent.key, "gif")
|
||||
} else {
|
||||
context?.let { context ->
|
||||
DataBindingUtils.loadImage(context, "quest_" + questContent.key) {
|
||||
|
|
@ -230,7 +231,7 @@ class PartyDetailFragment : BaseFragment<FragmentPartyDetailBinding>() {
|
|||
binding?.questImageView?.layoutParams = params
|
||||
}
|
||||
}
|
||||
DataBindingUtils.loadImage(binding?.questImageView, "quest_" + questContent.key)
|
||||
binding?.questImageView?.loadImage("quest_" + questContent.key)
|
||||
}
|
||||
binding?.questImageWrapper?.alpha = 1.0f
|
||||
binding?.questProgressView?.alpha = 1.0f
|
||||
|
|
|
|||
|
|
@ -6,39 +6,36 @@ import android.graphics.drawable.Drawable
|
|||
import android.view.View
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.Transformation
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import coil.imageLoader
|
||||
import coil.load
|
||||
import coil.request.ImageRequest
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.setTintWith
|
||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
import java.util.Collections
|
||||
import java.util.Date
|
||||
|
||||
fun ImageView.loadImage(imageName: String?, imageFormat: String? = null) {
|
||||
DataBindingUtils.loadImage(this, imageName, imageFormat)
|
||||
fun PixelArtView.loadImage(imageName: String?, imageFormat: String? = null) {
|
||||
if (imageName != null) {
|
||||
val fullname = DataBindingUtils.getFullFilename(imageName, imageFormat)
|
||||
if (tag == fullname) {
|
||||
return
|
||||
}
|
||||
tag = fullname
|
||||
bitmap = null
|
||||
DataBindingUtils.loadImage(context, imageName, imageFormat) {
|
||||
if (tag == fullname) {
|
||||
bitmap = it.toBitmap()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object DataBindingUtils {
|
||||
|
||||
fun loadImage(view: ImageView?, imageName: String) {
|
||||
loadImage(view, imageName, null)
|
||||
}
|
||||
|
||||
fun loadImage(view: ImageView?, imageName: String?, imageFormat: String? = null) {
|
||||
if (view != null && imageName != null && view.visibility == View.VISIBLE) {
|
||||
val fullname = getFullFilename(imageName, imageFormat)
|
||||
if (view.tag == fullname) {
|
||||
return
|
||||
}
|
||||
view.tag = fullname
|
||||
view.load(BASE_IMAGE_URL + fullname)
|
||||
}
|
||||
}
|
||||
|
||||
fun loadImage(context: Context, imageName: String, imageResult: (Drawable) -> Unit) {
|
||||
loadImage(context, imageName, null, imageResult)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class MountViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject
|
|||
binding.activeIndicator.visibility = if (currentMount.equals(animal?.key)) View.VISIBLE else View.GONE
|
||||
DataBindingUtils.loadImage(itemView.context, imageName) {
|
||||
val drawable = if (owned) it else BitmapDrawable(itemView.context.resources, it.toBitmap().extractAlpha())
|
||||
binding.imageView.background = drawable
|
||||
binding.imageView.bitmap = drawable.toBitmap()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ class PetViewHolder(
|
|||
val resources = itemView.context.resources ?: return@loadImage
|
||||
val drawable =
|
||||
if (trained == 0) BitmapDrawable(resources, it.toBitmap().extractAlpha()) else it
|
||||
binding.imageView.background = drawable
|
||||
binding.imageView.bitmap = drawable.toBitmap()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import com.habitrpg.android.habitica.databinding.RowShopitemBinding
|
|||
import com.habitrpg.android.habitica.extensions.dpToPx
|
||||
import com.habitrpg.android.habitica.extensions.isUsingNightModeResources
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Vi
|
|||
this.item = item
|
||||
binding.buyButton.visibility = View.VISIBLE
|
||||
|
||||
DataBindingUtils.loadImage(binding.imageView, item.imageName?.replace("_locked", ""))
|
||||
binding.imageView.loadImage(item.imageName?.replace("_locked", ""))
|
||||
|
||||
binding.itemDetailIndicator.text = null
|
||||
binding.itemDetailIndicator.visibility = View.GONE
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import android.widget.LinearLayout
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.ItemImageRowBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
|
||||
class EquipmentItemRow(context: Context, attrs: AttributeSet?) : LinearLayout(context, attrs) {
|
||||
|
||||
|
|
@ -16,14 +16,14 @@ class EquipmentItemRow(context: Context, attrs: AttributeSet?) : LinearLayout(co
|
|||
set(value) {
|
||||
field = value
|
||||
val imageName = if (equipmentIdentifier?.isNotEmpty() == true && equipmentIdentifier?.endsWith("base_0") == false) "shop_$equipmentIdentifier" else "head_0"
|
||||
DataBindingUtils.loadImage(binding.imageView, imageName)
|
||||
binding.imageView.loadImage(imageName)
|
||||
}
|
||||
|
||||
var customizationIdentifier: String? = null
|
||||
set(value) {
|
||||
field = value
|
||||
val imageName = if (customizationIdentifier?.isNotEmpty() == true) customizationIdentifier else "head_0"
|
||||
DataBindingUtils.loadImage(binding.imageView, imageName)
|
||||
binding.imageView.loadImage(imageName)
|
||||
}
|
||||
|
||||
init {
|
||||
|
|
|
|||
|
|
@ -38,7 +38,9 @@ class NPCBannerView(context: Context, attrs: AttributeSet?) : FrameLayout(contex
|
|||
}
|
||||
|
||||
private fun setImage() {
|
||||
DataBindingUtils.loadImage(binding.sceneView, identifier + "_scene" + shopSpriteSuffix)
|
||||
DataBindingUtils.loadImage(context, identifier + "_scene" + shopSpriteSuffix) {
|
||||
binding.sceneView.setImageDrawable(it)
|
||||
}
|
||||
|
||||
binding.backgroundView.scaleType = ImageView.ScaleType.FIT_START
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
package com.habitrpg.android.habitica.ui.views
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Paint
|
||||
import android.graphics.Rect
|
||||
import android.util.AttributeSet
|
||||
|
||||
class PixelArtView @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : androidx.appcompat.widget.AppCompatImageView(context, attrs, defStyleAttr) {
|
||||
|
||||
private var targetRect = Rect(0, 0, 0, 0)
|
||||
|
||||
var bitmap: Bitmap? = null
|
||||
set(value) {
|
||||
field = value
|
||||
updateTargetRect()
|
||||
invalidate()
|
||||
}
|
||||
|
||||
private val paint: Paint by lazy {
|
||||
val paint = Paint()
|
||||
paint.isAntiAlias = true
|
||||
paint.isFilterBitmap = false
|
||||
paint
|
||||
}
|
||||
|
||||
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
|
||||
super.onSizeChanged(w, h, oldw, oldh)
|
||||
updateTargetRect()
|
||||
}
|
||||
|
||||
private fun updateTargetRect() {
|
||||
var targetWidth = bitmap?.width ?: 0
|
||||
var targetHeight = bitmap?.height ?: 0
|
||||
|
||||
if (width > 0 && targetWidth > 0 && width != targetWidth) {
|
||||
targetWidth = (targetWidth/3) * (width / (targetWidth/3))
|
||||
}
|
||||
if (height > 0 && targetHeight > 0 && height != targetHeight) {
|
||||
targetHeight = (targetHeight/3) * (height / (targetHeight/3))
|
||||
}
|
||||
|
||||
val left = (width-targetWidth)/2
|
||||
val top = (height-targetHeight)/2
|
||||
targetRect = Rect(left, top, left+targetWidth, top+targetHeight)
|
||||
}
|
||||
|
||||
override fun onDraw(canvas: Canvas?) {
|
||||
if (bitmap == null) {
|
||||
super.onDraw(canvas)
|
||||
return
|
||||
}
|
||||
val bitmap = bitmap ?: return
|
||||
canvas?.drawBitmap(bitmap, null, targetRect, paint)
|
||||
}
|
||||
}
|
||||
|
|
@ -3,17 +3,17 @@ package com.habitrpg.android.habitica.ui.views.dialogs
|
|||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.databinding.DialogAchievementDetailBinding
|
||||
import com.habitrpg.android.habitica.extensions.addCloseButton
|
||||
import com.habitrpg.android.habitica.extensions.fromHtml
|
||||
import com.habitrpg.android.habitica.models.Achievement
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class AchievementDetailDialog(val achievement: Achievement, context: Context) : HabiticaAlertDialog(context) {
|
||||
|
||||
private var iconView: ImageView?
|
||||
private var iconView: PixelArtView?
|
||||
private var descriptionView: TextView?
|
||||
|
||||
init {
|
||||
|
|
@ -30,7 +30,7 @@ class AchievementDetailDialog(val achievement: Achievement, context: Context) :
|
|||
} else {
|
||||
"achievement-unearned2x"
|
||||
}
|
||||
DataBindingUtils.loadImage(iconView, iconName)
|
||||
iconView?.loadImage(iconName)
|
||||
addCloseButton(true)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import com.habitrpg.android.habitica.extensions.layoutInflater
|
|||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.models.Notification
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
|
||||
class AchievementDialog(context: Context) : HabiticaAlertDialog(context) {
|
||||
var isLastOnboardingAchievement: Boolean = false
|
||||
|
|
@ -51,7 +51,7 @@ class AchievementDialog(context: Context) : HabiticaAlertDialog(context) {
|
|||
private fun configure(title: String, description: String, iconName: String) {
|
||||
binding.titleView.text = title
|
||||
binding.descriptionView.setText(description.fromHtml(), TextView.BufferType.SPANNABLE)
|
||||
DataBindingUtils.loadImage(binding.iconView, "achievement-${iconName}2x")
|
||||
binding.iconView.loadImage("achievement-${iconName}2x")
|
||||
if (iconName == "onboardingComplete") {
|
||||
setTitle(R.string.onboardingComplete_achievement_title)
|
||||
binding.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14f)
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@ package com.habitrpg.android.habitica.ui.views.dialogs
|
|||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.ImageView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class FirstDropDialog(context: Context) : HabiticaAlertDialog(context) {
|
||||
|
||||
private var eggView: ImageView?
|
||||
private var hatchingPotionView: ImageView?
|
||||
private var eggView: PixelArtView?
|
||||
private var hatchingPotionView: PixelArtView?
|
||||
|
||||
init {
|
||||
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater
|
||||
|
|
@ -26,7 +26,7 @@ class FirstDropDialog(context: Context) : HabiticaAlertDialog(context) {
|
|||
}
|
||||
|
||||
fun configure(egg: String, hatchingPotion: String) {
|
||||
DataBindingUtils.loadImage(eggView, "Pet_Egg_$egg")
|
||||
DataBindingUtils.loadImage(hatchingPotionView, "Pet_HatchingPotion_$hatchingPotion")
|
||||
eggView?.loadImage("Pet_Egg_$egg")
|
||||
hatchingPotionView?.loadImage("Pet_HatchingPotion_$hatchingPotion")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import com.habitrpg.android.habitica.models.inventory.Item
|
|||
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyView
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
|
|
@ -50,8 +51,8 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) {
|
|||
hasUnlockedPotion: Boolean,
|
||||
hasMount: Boolean
|
||||
) {
|
||||
DataBindingUtils.loadImage(binding.eggView, "Pet_Egg_${pet.animal}")
|
||||
DataBindingUtils.loadImage(binding.hatchingPotionView, "Pet_HatchingPotion_${pet.color}")
|
||||
binding.eggView.loadImage("Pet_Egg_${pet.animal}")
|
||||
binding.hatchingPotionView.loadImage("Pet_HatchingPotion_${pet.color}")
|
||||
binding.petTitleView.text = pet.text
|
||||
|
||||
val hasEgg = eggCount > 0
|
||||
|
|
@ -170,7 +171,7 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{
|
||||
binding.petView.background = drawable
|
||||
binding.petView.bitmap = drawable.toBitmap()
|
||||
},
|
||||
RxErrorHandler.handleEmptyError()
|
||||
)
|
||||
|
|
|
|||
|
|
@ -15,8 +15,9 @@ import com.habitrpg.android.habitica.extensions.fromHtml
|
|||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestDropItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class QuestCompletedDialogContent : LinearLayout {
|
||||
|
||||
|
|
@ -40,7 +41,7 @@ class QuestCompletedDialogContent : LinearLayout {
|
|||
fun setQuestContent(questContent: QuestContent) {
|
||||
binding.titleTextView.setText(questContent.text.fromHtml(), TextView.BufferType.SPANNABLE)
|
||||
binding.notesTextView.setText(questContent.completion.fromHtml(), TextView.BufferType.SPANNABLE)
|
||||
DataBindingUtils.loadImage(binding.imageView, "quest_" + questContent.key)
|
||||
binding.imageView.loadImage("quest_" + questContent.key)
|
||||
|
||||
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as? LayoutInflater
|
||||
|
||||
|
|
@ -89,9 +90,9 @@ class QuestCompletedDialogContent : LinearLayout {
|
|||
containerView: ViewGroup?
|
||||
) {
|
||||
val view = inflater?.inflate(R.layout.row_quest_reward, containerView, false) as? ViewGroup
|
||||
val imageView = view?.findViewById(R.id.imageView) as? ImageView
|
||||
val imageView = view?.findViewById(R.id.imageView) as? PixelArtView
|
||||
val titleTextView = view?.findViewById(R.id.titleTextView) as? TextView
|
||||
DataBindingUtils.loadImage(imageView, item.imageName)
|
||||
imageView?.loadImage(item.imageName)
|
||||
if (item.count > 1) {
|
||||
titleTextView?.text = context.getString(R.string.quest_reward_count, item.text, item.count)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@ import android.widget.TextView
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.fromHtml
|
||||
import com.habitrpg.android.habitica.models.notifications.ChallengeWonData
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class WonChallengeDialog(context: Context) : HabiticaAlertDialog(context) {
|
||||
fun configure(data: ChallengeWonData?) {
|
||||
val imageView = additionalContentView?.findViewById<ImageView>(R.id.achievement_view)
|
||||
DataBindingUtils.loadImage(imageView, "achievement-karaoke-2x")
|
||||
val imageView = additionalContentView?.findViewById<PixelArtView>(R.id.achievement_view)
|
||||
imageView?.loadImage("achievement-karaoke-2x")
|
||||
|
||||
if (data?.name != null) {
|
||||
additionalContentView?.findViewById<TextView>(R.id.description_view)?.text = context.getString(R.string.won_achievement_description, data.name).fromHtml()
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import androidx.core.content.ContextCompat
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.EquipmentOverviewItemBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
||||
class EquipmentOverviewItem @JvmOverloads constructor(
|
||||
|
|
@ -35,7 +35,7 @@ class EquipmentOverviewItem @JvmOverloads constructor(
|
|||
identifier = key ?: ""
|
||||
binding.twoHandedIndicator.setImageDrawable(null)
|
||||
if (identifier.isNotEmpty() && !identifier.endsWith("base_0")) {
|
||||
DataBindingUtils.loadImage(binding.iconView, "shop_$key")
|
||||
binding.iconView.loadImage("shop_$key")
|
||||
binding.localIconView.visibility = View.GONE
|
||||
binding.iconView.visibility = View.VISIBLE
|
||||
binding.iconWrapper.background = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_content)
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.databinding.PurchaseDialogBackgroundBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.Avatar
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class PurchaseDialogBackgroundContent(context: Context) : PurchaseDialogContent(context) {
|
||||
val binding = PurchaseDialogBackgroundBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
get() = ImageView(context)
|
||||
override val imageView: PixelArtView
|
||||
get() = PixelArtView(context)
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.databinding.DialogPurchaseContentItemBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class PurchaseDialogBaseContent(context: Context) : PurchaseDialogContent(context) {
|
||||
val binding = DialogPurchaseContentItemBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
override val imageView: PixelArtView
|
||||
get() = binding.imageView
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.habitrpg.android.habitica.ui.views.shops
|
|||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import coil.load
|
||||
|
|
@ -13,6 +12,7 @@ import com.habitrpg.android.habitica.models.inventory.QuestContent
|
|||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
abstract class PurchaseDialogContent @JvmOverloads constructor(
|
||||
context: Context,
|
||||
|
|
@ -20,7 +20,7 @@ abstract class PurchaseDialogContent @JvmOverloads constructor(
|
|||
defStyleAttr: Int = 0
|
||||
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
abstract val imageView: ImageView
|
||||
abstract val imageView: PixelArtView
|
||||
abstract val titleTextView: TextView
|
||||
|
||||
init {
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.databinding.DialogPurchaseCustomizationBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class PurchaseDialogCustomizationContent(context: Context) : PurchaseDialogContent(context) {
|
||||
val binding = DialogPurchaseCustomizationBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
override val imageView: PixelArtView
|
||||
get() = binding.imageView
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.google.android.flexbox.FlexboxLayout
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
|
@ -10,11 +9,12 @@ import com.habitrpg.android.habitica.extensions.dpToPx
|
|||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class PurchaseDialogCustomizationSetContent(context: Context) : PurchaseDialogContent(context) {
|
||||
val binding = DialogPurchaseCustomizationsetBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
get() = ImageView(context)
|
||||
override val imageView: PixelArtView
|
||||
get() = PixelArtView(context)
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ class PurchaseDialogCustomizationSetContent(context: Context) : PurchaseDialogCo
|
|||
titleTextView.text = item.text
|
||||
binding.imageViewWrapper.removeAllViews()
|
||||
item.setImageNames.forEach {
|
||||
val imageView = ImageView(context)
|
||||
val imageView = PixelArtView(context)
|
||||
imageView.setBackgroundResource(R.drawable.layout_rounded_bg_window)
|
||||
imageView.loadImage(it)
|
||||
imageView.layoutParams = FlexboxLayout.LayoutParams(76.dpToPx(context), 76.dpToPx(context))
|
||||
|
|
|
|||
|
|
@ -9,10 +9,11 @@ import com.habitrpg.android.habitica.databinding.DialogPurchaseContentGearBindin
|
|||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.inventory.Equipment
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
internal class PurchaseDialogGearContent(context: Context) : PurchaseDialogContent(context) {
|
||||
val binding = DialogPurchaseContentGearBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
override val imageView: PixelArtView
|
||||
get() = binding.imageView
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
|
|
|||
|
|
@ -8,10 +8,11 @@ import com.habitrpg.android.habitica.extensions.asDrawable
|
|||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
internal class PurchaseDialogGemsContent(context: Context) : PurchaseDialogContent(context) {
|
||||
internal val binding = DialogPurchaseGemsBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
override val imageView: PixelArtView
|
||||
get() = binding.imageView
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.databinding.DialogPurchaseContentItemBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class PurchaseDialogItemContent(context: Context) : PurchaseDialogContent(context) {
|
||||
private val binding = DialogPurchaseContentItemBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
override val imageView: PixelArtView
|
||||
get() = binding.imageView
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
|
|
|||
|
|
@ -12,12 +12,13 @@ import com.habitrpg.android.habitica.databinding.DialogPurchaseContentQuestBindi
|
|||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestDropItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.PixelArtView
|
||||
|
||||
class PurchaseDialogQuestContent(context: Context) : PurchaseDialogContent(context) {
|
||||
private val binding = DialogPurchaseContentQuestBinding.inflate(context.layoutInflater, this)
|
||||
override val imageView: ImageView
|
||||
override val imageView: PixelArtView
|
||||
get() = binding.imageView
|
||||
override val titleTextView: TextView
|
||||
get() = binding.titleTextView
|
||||
|
|
@ -91,9 +92,9 @@ class PurchaseDialogQuestContent(context: Context) : PurchaseDialogContent(conte
|
|||
containerView: ViewGroup?
|
||||
) {
|
||||
val view = inflater?.inflate(R.layout.row_quest_reward, containerView, false) as? ViewGroup
|
||||
val imageView = view?.findViewById(R.id.imageView) as? ImageView
|
||||
val imageView = view?.findViewById(R.id.imageView) as? PixelArtView
|
||||
val titleTextView = view?.findViewById(R.id.titleTextView) as? TextView
|
||||
DataBindingUtils.loadImage(imageView, item.imageName)
|
||||
imageView?.loadImage(item.imageName)
|
||||
if (item.count > 1) {
|
||||
titleTextView?.text = context.getString(R.string.quest_reward_count, item.text, item.count)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -6,11 +6,10 @@ import android.graphics.RectF
|
|||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.QuestCollectBinding
|
||||
import com.habitrpg.android.habitica.databinding.QuestProgressOldBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.extensions.setScaledPadding
|
||||
|
|
@ -18,10 +17,9 @@ import com.habitrpg.android.habitica.models.inventory.QuestContent
|
|||
import com.habitrpg.android.habitica.models.inventory.QuestProgress
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestProgressCollect
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIcons
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.ValueBar
|
||||
|
||||
class OldQuestProgressView : LinearLayout {
|
||||
private val binding = QuestProgressOldBinding.inflate(context.layoutInflater, this)
|
||||
|
|
@ -95,15 +93,10 @@ class OldQuestProgressView : LinearLayout {
|
|||
val inflater = LayoutInflater.from(context)
|
||||
for (collect in progress.collect ?: emptyList<QuestProgressCollect>()) {
|
||||
val contentCollect = quest.getCollectWithKey(collect.key) ?: continue
|
||||
val view = inflater.inflate(R.layout.quest_collect, binding.collectionContainer, false)
|
||||
val iconView = view.findViewById(R.id.icon_view) as? ImageView
|
||||
val nameView = view.findViewById(R.id.name_view) as? TextView
|
||||
val valueView = view.findViewById(R.id.value_view) as? ValueBar
|
||||
DataBindingUtils.loadImage(iconView, "quest_" + quest.key + "_" + collect.key)
|
||||
nameView?.text = contentCollect.text
|
||||
valueView?.set(collect.count.toDouble(), contentCollect.count.toDouble())
|
||||
|
||||
binding.collectionContainer.addView(view)
|
||||
val collectBinding = QuestCollectBinding.inflate(inflater, binding.collectionContainer, true)
|
||||
collectBinding.iconView.loadImage("quest_" + quest.key + "_" + collect.key)
|
||||
collectBinding.nameView.text = contentCollect.text
|
||||
collectBinding.valueView.set(collect.count.toDouble(), contentCollect.count.toDouble())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.edit
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.QuestCollectBinding
|
||||
import com.habitrpg.android.habitica.databinding.QuestProgressBinding
|
||||
import com.habitrpg.android.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
|
|
@ -26,11 +26,11 @@ import com.habitrpg.android.habitica.models.inventory.QuestContent
|
|||
import com.habitrpg.android.habitica.models.inventory.QuestProgressCollect
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.helpers.setMarkdown
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIcons
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.NPCBannerView
|
||||
import com.habitrpg.android.habitica.ui.views.ValueBar
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Observable
|
||||
|
|
@ -148,8 +148,8 @@ class QuestProgressView : LinearLayout {
|
|||
}
|
||||
}
|
||||
binding.questDescription.setMarkdown(quest.notes)
|
||||
DataBindingUtils.loadImage(binding.questImageView, "quest_" + quest.key, "gif")
|
||||
DataBindingUtils.loadImage(binding.questFlourishesImageView, "quest_" + quest.key + "_flourishes")
|
||||
binding.questImageView.loadImage("quest_" + quest.key, "gif")
|
||||
binding.questFlourishesImageView.loadImage("quest_" + quest.key + "_flourishes")
|
||||
val lightColor = quest.colors?.lightColor
|
||||
if (lightColor != null) {
|
||||
binding.questDescriptionSection.separatorColor = lightColor
|
||||
|
|
@ -253,15 +253,10 @@ class QuestProgressView : LinearLayout {
|
|||
val inflater = LayoutInflater.from(context)
|
||||
for (collect in collection) {
|
||||
val contentCollect = quest.getCollectWithKey(collect.key) ?: continue
|
||||
val view = inflater.inflate(R.layout.quest_collect, binding.collectionContainer, false)
|
||||
val iconView: ImageView = view.findViewById(R.id.icon_view)
|
||||
val nameView: TextView = view.findViewById(R.id.name_view)
|
||||
val valueView: ValueBar = view.findViewById(R.id.value_view)
|
||||
DataBindingUtils.loadImage(iconView, "quest_" + quest.key + "_" + collect.key)
|
||||
nameView.text = contentCollect.text
|
||||
valueView.set(collect.count.toDouble(), contentCollect.count.toDouble())
|
||||
|
||||
binding.collectionContainer.addView(view)
|
||||
val collectBinding = QuestCollectBinding.inflate(inflater, binding.collectionContainer, true)
|
||||
collectBinding.iconView.loadImage("quest_" + quest.key + "_" + collect.key)
|
||||
collectBinding.nameView.text = contentCollect.text
|
||||
collectBinding.valueView.set(collect.count.toDouble(), contentCollect.count.toDouble())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -289,7 +284,7 @@ class QuestProgressView : LinearLayout {
|
|||
|
||||
private fun showQuestImage() {
|
||||
binding.questImageWrapper.visibility = View.VISIBLE
|
||||
DataBindingUtils.loadImage(binding.questImageView, "quest_" + quest?.key)
|
||||
binding.questImageView.loadImage("quest_" + quest?.key)
|
||||
preferences?.edit { putBoolean("boss_art_collapsed", false) }
|
||||
updateCaretImage()
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue