스팀 앱 개발기 #44 - 지갑 화면에 파워 다운 내용 보여주기

in kr-dev 커뮤니티4 years ago (edited)

지갑 화면에서 파워 다운 관련 내용은 없었죠. 이번 포스트에서 이를 추가 구현하고자 합니다.


스크린샷

아래 그림과 같이 지갑에서 파워 다운 수량도 추가로 보여줍니다.

IMAGE 2022-10-12 23:54:02.jpg


작업 개요

SteemitWallet 데이터 클래스 수정
SteemitWallet 객체 생성 코드 수정
파워 다운 레이아웃 정의
지갑 화면에 파워 다운 레이아웃 추가


SteemitWallet 데이터 클래스 수정

파워 다운 할 스팀 파워 수량을 나타내는 필드를 이 클래스에 추가했습니다.

as -is

spToBeWithdrawn: 파워 다운으로 회수할 스팀 파워 총수량

to-be

totalSPToBeWithdrawn: 기존 spToBeWithdrawn와 동일. 헷갈리지 않게 이름 수정
remainingSPToBeWithdrawn: 파워 다운 할 스팀 파워 수량


SteemitWallet 객체 생성 코드 수정

SteemitWallet 클래스에 remainingSPToBeWithdrawn 필드 추가, spToBeWithdrawn 필드 이름을 totalSPToBeWithdrawn로 수정하였죠. SteemitAccountDTO 클래스의 toSteemitWallet 메소드들도 이를 반영하였습니다.

추가로 스팀 파워들의 소수점 개수를 3개로 고정하는 코드도 반영했습니다.

return SteemitWallet(
    name ?: "",
    balance ?: "0 STEEM",
    sbd_balance ?: "0 SBD",
    savings_balance ?: "0 STEEM",
    savings_sbd_balance ?: "0 SBD",
    String.format("%.3f SP", steemPower),
    String.format("%.3f SP", effectiveSteemPower),
    String.format("%.3f SP", delegatedSteemPower),
    String.format("%.3f SP", receivedSteemPower),
    String.format("%.3f SP", steemPowerWithdrawRate),
    String.format("%.3f SP", totalSteemPowerToBeWithdrawn),
    String.format("%.3f SP", remainingSteemPowerToBeWithdrawn)
)

파워 다운 레이아웃 정의

layout_steem_staking.xml 파일을 참고하여 파워 다운 레이아웃을 정의하였습니다.

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="viewModel"
            type="lee.dorian.steem_ui.ui.wallet.WalletViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/wallet_balance_bg"
        android:padding="12dp">

        <TextView
            android:id="@+id/text_power_down"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Power Down"
            android:textColor="@color/black"
            android:textSize="24sp"
            android:textStyle="bold"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/text_sp_to_power_down"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="SP to power down:"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintLeft_toLeftOf="@id/text_power_down"
            app:layout_constraintTop_toBottomOf="@id/text_power_down" />

        <TextView
            android:id="@+id/text_sp_to_power_down_amount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{viewModel.steemitWallet.totalSPToBeWithdrawn}"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="@id/text_sp_to_power_down"
            tools:text="0.000 SP" />

        <TextView
            android:id="@+id/text_power_down_rate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Power down rate:"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintLeft_toLeftOf="@id/text_power_down"
            app:layout_constraintTop_toBottomOf="@id/text_sp_to_power_down" />

        <TextView
            android:id="@+id/text_power_down_rate_amount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{viewModel.steemitWallet.spWithdrawRate}"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="@id/text_power_down_rate"
            tools:text="0.000 SP" />

        <TextView
            android:id="@+id/text_steem_power_withdrawn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Remaining SP:"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintLeft_toLeftOf="@id/text_power_down"
            app:layout_constraintTop_toBottomOf="@id/text_power_down_rate" />

        <TextView
            android:id="@+id/text_steem_power_withdrawn_amount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{viewModel.steemitWallet.remainingSPToBeWithdrawn}"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="@id/text_steem_power_withdrawn"
            tools:text="0.000 SP" />

        <TextView
            android:id="@+id/text_next_power_down"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Next power down:"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintLeft_toLeftOf="@id/text_power_down"
            app:layout_constraintTop_toBottomOf="@id/text_steem_power_withdrawn" />

        <TextView
            android:id="@+id/text_next_power_down_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="(Coming soon...)"
            android:textColor="@color/black"
            android:textSize="16sp"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="@id/text_next_power_down"
            tools:text="2022-01-23 01:23" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</layout>

다음 파워 다운 시간은 "(Coming soon...)"으로 표기하였습니다. API가 주는 시간은 UTC 시간이므로 한국 시간과는 맞지 않기 때문입니다. 타임존에 맞게 시간 바꾸는 코드는 다음에 구현할 예정입니다.


지갑 화면에 파워 다운 레이아웃 추가

fragment_wallet.xml 파일에 아래와 같이 파워 다운 수량을 보여줄 레이아웃을 추가하였습니다.

<include
    android:id="@+id/include_power_down"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    layout="@layout/layout_power_down"
    app:viewModel="@{viewModel}"
    app:layout_constraintTop_toBottomOf="@id/include_steem_savings" />

이 레이아웃 추가로 일부 안드로이드 기기에서는 지갑 화면의 스크롤이 필요합니다. 스크롤도 나중에 적용할 예정입니다.


GitHub Commit


지난 스팀 앱 개발기

Sort:  
 4 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.05
TRX 0.33
JST 0.079
BTC 63953.57
ETH 1690.68
USDT 1.00
SBD 0.42