فهرست منبع

1. 我的账户UI(1)

咸光金 4 سال پیش
والد
کامیت
962d01e792

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -96,6 +96,7 @@
             android:launchMode="singleTask"
             android:taskAffinity="com.quansu.heifengwuliu" />
         <activity android:name=".activity.MsgActivity" />
+        <activity android:name=".activity.AccountActivity" />
 
     </application >
 

+ 74 - 0
app/src/main/java/com/quansu/heifengwuliu/activity/AccountActivity.kt

@@ -0,0 +1,74 @@
+package com.quansu.heifengwuliu.activity
+
+import android.graphics.Color
+import android.graphics.Typeface
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentPagerAdapter
+import androidx.viewpager.widget.PagerAdapter
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
+import com.quansu.heifengwuliu.R
+import com.quansu.heifengwuliu.base.MBActivity
+import com.quansu.heifengwuliu.databinding.ActivityAccountBinding
+import com.quansu.heifengwuliu.fragment.AccountAnalysisFragment
+import com.quansu.heifengwuliu.fragment.AccountBillFragment
+import com.ysnows.base.base.BRepository
+import com.ysnows.base.base.BViewModel
+
+class AccountActivity : MBActivity<BViewModel<BRepository>, ActivityAccountBinding>() {
+
+    override fun initView(view: View?) {
+        super.initView(view)
+
+        initTabs()
+        initPager()
+    }
+
+    private fun initPager() {
+        val mPagerAdapter: PagerAdapter = object : FragmentPagerAdapter(supportFragmentManager) {
+            override fun getItem(position: Int): Fragment {
+                return if (position == 1) {
+                    AccountAnalysisFragment()
+                } else AccountBillFragment()
+            }
+
+            override fun getCount(): Int {
+                return 2
+            }
+        }
+        binding.pager.adapter = mPagerAdapter
+        binding.tabs.setupWithViewPager(binding.pager, false)
+    }
+
+
+    private fun initTabs() {
+        binding.tabs.setIndicator(QMUITabIndicator(QMUIDisplayHelper.dp2px(context(), 3), false, true))
+        val builder = binding.tabs.tabBuilder()
+        builder
+                .skinChangeWithTintColor(false)
+                .setSelectColor(Color.parseColor("#2E4E71"))
+                .setNormalColor(Color.parseColor("#666666"))
+                .setTypeface(Typeface.DEFAULT_BOLD, Typeface.DEFAULT_BOLD)
+                .setDynamicChangeIconColor(false)
+        val component = builder
+                .setText(getString(R.string.bill))
+                .build(context())
+        val util = builder
+                .setText(getText(R.string.analysis))
+                .build(context())
+        binding.tabs
+                .addTab(component)
+                .addTab(util)
+    }
+
+
+    override fun binding(): ActivityAccountBinding {
+        return ActivityAccountBinding.inflate(layoutInflater)
+    }
+
+
+    override fun title(): String? {
+        return getString(R.string.my_account)
+    }
+}

+ 13 - 0
app/src/main/java/com/quansu/heifengwuliu/adapter/BillAdapter.kt

@@ -0,0 +1,13 @@
+package com.quansu.heifengwuliu.adapter
+
+import com.chad.library.adapter.base.viewholder.BaseDataBindingHolder
+import com.quansu.heifengwuliu.R
+import com.quansu.heifengwuliu.databinding.ItemMsgBinding
+import com.quansu.heifengwuliu.model.Msg
+import com.ysnows.base.base.BAdapter
+
+class BillAdapter : BAdapter<Msg, BaseDataBindingHolder<ItemMsgBinding>>(R.layout.item_msg) {
+    override fun convert(holder: BaseDataBindingHolder<ItemMsgBinding>, item: Msg) {
+        holder.dataBinding?.item = item
+    }
+}

+ 20 - 0
app/src/main/java/com/quansu/heifengwuliu/fragment/AccountAnalysisFragment.kt

@@ -0,0 +1,20 @@
+package com.quansu.heifengwuliu.fragment
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import com.quansu.heifengwuliu.base.MBFragment
+import com.quansu.heifengwuliu.databinding.FragmentAccountAnalysisBinding
+import com.ysnows.base.base.BRepository
+import com.ysnows.base.base.BViewModel
+
+class AccountAnalysisFragment : MBFragment<BViewModel<BRepository>, FragmentAccountAnalysisBinding>() {
+    override fun binding(inflater: LayoutInflater, container: ViewGroup?): FragmentAccountAnalysisBinding {
+        return FragmentAccountAnalysisBinding.inflate(inflater, container, false)
+    }
+
+
+    override fun title(): String? {
+        return null
+    }
+
+}

+ 31 - 0
app/src/main/java/com/quansu/heifengwuliu/fragment/AccountBillFragment.kt

@@ -0,0 +1,31 @@
+package com.quansu.heifengwuliu.fragment
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import com.quansu.heifengwuliu.adapter.BillAdapter
+import com.quansu.heifengwuliu.base.MBRFragment
+import com.quansu.heifengwuliu.databinding.FragmentAccountBillBinding
+import com.quansu.heifengwuliu.utils.net.NetEngine
+import com.ysnows.base.base.BRRepository
+import com.ysnows.base.base.BRViewModel
+import com.ysnows.base.net.IResponse
+import io.reactivex.Observable
+
+class AccountBillFragment : MBRFragment<BRViewModel<BRRepository>, BillAdapter, FragmentAccountBillBinding>() {
+
+    override fun initAdapter(): BillAdapter {
+        return BillAdapter()
+    }
+
+    override fun api(): Observable<out IResponse<*>> {
+        return NetEngine.service.taskList("", vm?.repository()?.autoPage()!!)
+    }
+
+    override fun binding(inflater: LayoutInflater, container: ViewGroup?): FragmentAccountBillBinding {
+        return FragmentAccountBillBinding.inflate(layoutInflater, container, false)
+    }
+
+    override fun title(): String? {
+        return null
+    }
+}

+ 11 - 0
app/src/main/java/com/quansu/heifengwuliu/model/Bill.kt

@@ -0,0 +1,11 @@
+package com.quansu.heifengwuliu.model
+
+
+data class Bill(
+        val title: String?,
+        val content: String?,
+        val create_time: String?,
+        val checked: Int?
+) {
+
+}

+ 5 - 0
app/src/main/java/com/quansu/heifengwuliu/vmodel/MineVModel.kt

@@ -1,6 +1,7 @@
 package com.quansu.heifengwuliu.vmodel
 
 import androidx.lifecycle.MutableLiveData
+import com.quansu.heifengwuliu.activity.AccountActivity
 import com.quansu.heifengwuliu.activity.MsgActivity
 import com.quansu.heifengwuliu.activity.SettingsActivity
 import com.quansu.heifengwuliu.model.User
@@ -23,6 +24,10 @@ open class MineVModel : BViewModel<MineRepository>() {
         single(MsgActivity::class.java)
     }
 
+    fun goMyAccount() {
+        single(AccountActivity::class.java)
+    }
+
     override fun firstReq() {
         super.firstReq()
         repository().getUserInfo()

+ 40 - 0
app/src/main/res/layout/activity_account.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <data >
+
+    </data >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical" >
+
+        <FrameLayout
+            android:id="@+id/lay_container"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" >
+
+            <com.qmuiteam.qmui.widget.tab.QMUITabSegment
+                android:id="@+id/tabs"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/title_bar_height"
+                android:background="@color/white"
+                android:textSize="12sp" />
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="8dp"
+                android:layout_marginTop="@dimen/title_bar_height"
+                android:background="@color/color_page" />
+
+            <com.qmuiteam.qmui.widget.QMUIViewPager
+                android:id="@+id/pager"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginTop="58dp" />
+
+        </FrameLayout >
+
+    </LinearLayout >
+</layout >

+ 30 - 0
app/src/main/res/layout/fragment_account_analysis.xml

@@ -0,0 +1,30 @@
+<?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 >
+
+    </data >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical" >
+
+        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+            android:id="@+id/refresh_layout"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" >
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recycler_view"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+                tools:listitem="@layout/item_msg" />
+
+        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout >
+    </LinearLayout >
+
+</layout >

+ 30 - 0
app/src/main/res/layout/fragment_account_bill.xml

@@ -0,0 +1,30 @@
+<?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 >
+
+    </data >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical" >
+
+        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+            android:id="@+id/refresh_layout"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" >
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recycler_view"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+                tools:listitem="@layout/item_msg" />
+
+        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout >
+    </LinearLayout >
+
+</layout >

+ 1 - 0
app/src/main/res/layout/fragment_mine.xml

@@ -133,6 +133,7 @@
                         android:layout_height="wrap_content"
                         android:layout_weight="1"
                         android:gravity="center"
+                        android:onClick="@{v->vm.goMyAccount()}"
                         android:orientation="vertical" >
 
                         <ImageView

+ 78 - 0
app/src/main/res/layout/item_bill.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools" >
+
+    <data >
+
+        <variable
+            name="item"
+            type="com.quansu.heifengwuliu.model.Msg" />
+
+    </data >
+
+    <RelativeLayout
+        android:id="@+id/rl_todo"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:paddingLeft="@dimen/dp_10"
+        android:paddingTop="@dimen/dp_10"
+        android:paddingRight="@dimen/dp_10" >
+
+        <ImageView
+            android:id="@+id/img_icon"
+            android:layout_width="45dp"
+            android:layout_height="45dp"
+            android:layout_centerVertical="true"
+            android:padding="@dimen/dp_13"
+            android:src="@{item.checked==0?@drawable/uncomplete:@drawable/complete}"
+            tools:src="@mipmap/ic_launcher" />
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginStart="@dimen/dp_8"
+            android:layout_toEndOf="@id/img_icon"
+            android:orientation="vertical" >
+
+            <TextView
+                android:id="@+id/tv_name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:maxLines="1"
+                android:text="@{item.title}"
+                android:textColor="@{item.checked==1?@color/text_hint:@color/text_black}"
+                android:textSize="@dimen/sp_16"
+                tools:text="@string/app_name" />
+
+            <TextView
+                android:id="@+id/tv_desc"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/dp_2"
+                android:text="@{item.create_time}"
+                android:textColor="@{item.checked==1?@color/text_hint:@color/text_black}"
+                tools:text="@string/app_name" />
+
+        </LinearLayout >
+
+        <ImageView
+            android:id="@+id/img_sort"
+            android:layout_width="50dp"
+            android:layout_height="50dp"
+            android:layout_alignParentEnd="true"
+            android:layout_centerVertical="true"
+            android:padding="@dimen/dp_14"
+            android:src="@drawable/ic_sort" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_alignParentBottom="true"
+            android:layout_marginLeft="@dimen/dp_20"
+            android:layout_marginTop="@dimen/dp_10"
+            android:background="@color/llGray" />
+    </RelativeLayout >
+</layout >

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -414,5 +414,7 @@ Api 已达到使用限制
     <string name="my_collection" >我的收藏</string >
     <string name="connect_service" >联系客服</string >
     <string name="msg" >消息</string >
+    <string name="bill" >账单</string >
+    <string name="analysis" >统计</string >
 
 </resources >