Commit 68a3e776 authored by yinjiacheng's avatar yinjiacheng

add: 生活号身份选择页面

parent 25996760
......@@ -29,5 +29,6 @@ class XRouterPathConstants {
const val VIDEO_COMMENT_DETAIL = "/newscontent/VideoDetailActivity"
const val COMMENT_TEST = "/newscontent/CommentTestActivity"
const val MINE = "/mine"
const val LIFE_ACCOUNT_IDENTITY = "/lifeAccountIdentity"
}
}
\ No newline at end of file
......@@ -92,6 +92,10 @@
<activity
android:name=".ui.LoginLifeCircleActivity"
android:theme="@style/Transparent" />
<activity android:name=".ui.LifeAccountIdentityActivity"
android:theme="@style/Transparent"/>
</application>
</manifest>
\ No newline at end of file
package com.yidian.shenghuoquan.newscontent.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.yidian.common.cardutils.adapter.OnItemClickListener
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.LifeAccountIdentityBean
import kotlinx.android.synthetic.main.item_life_account_identity.view.*
/**
* author: yinjiacheng
* date: 5/19/21 5:32 PM
* description: 生活号身份adapter
*/
class LifeAccountIdentityAdapter :
RecyclerView.Adapter<LifeAccountIdentityAdapter.LifeAccountIdentityViewHolder>() {
private val mData: ArrayList<LifeAccountIdentityBean> by lazy { ArrayList<LifeAccountIdentityBean>() }
private lateinit var mListener: OnItemClickListener<LifeAccountIdentityBean>
private lateinit var mLastSelectItem: View
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): LifeAccountIdentityViewHolder {
return LifeAccountIdentityViewHolder(
LayoutInflater.from(parent.context)
.inflate(R.layout.item_life_account_identity, parent, false)
)
}
override fun onBindViewHolder(
holder: LifeAccountIdentityViewHolder,
position: Int
) {
if (position == 0) {
// 默认选中第一个身份
mLastSelectItem = holder.itemView
holder.itemView.isSelected = true
}
val data = mData[position]
holder.itemView.tv_life_account.text = data.account
holder.itemView.tv_life_identity.text = data.identity
holder.itemView.setOnClickListener {
mLastSelectItem.isSelected = false
mLastSelectItem = holder.itemView
holder.itemView.isSelected = true
mListener.onClick(it, position, data)
}
}
override fun getItemCount(): Int {
return mData.size
}
/**
* 更新数据
*/
fun updateData(data: List<LifeAccountIdentityBean>) {
data.let {
mData.clear()
mData.addAll(it)
notifyDataSetChanged()
}
}
fun setOnItemClickListener(listener: OnItemClickListener<LifeAccountIdentityBean>) {
mListener = listener
}
/**
* 自定义ViewHolder
*/
class LifeAccountIdentityViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
\ No newline at end of file
......@@ -18,6 +18,7 @@ import com.yidian.common.XRouterPathConstants.Companion.COLLECTION
import com.yidian.common.XRouterPathConstants.Companion.FLASH
import com.yidian.common.XRouterPathConstants.Companion.GALLERY
import com.yidian.common.XRouterPathConstants.Companion.HOME
import com.yidian.common.XRouterPathConstants.Companion.LIFE_ACCOUNT_IDENTITY
import com.yidian.common.XRouterPathConstants.Companion.LOGIN_LIFE_CIRCLE
import com.yidian.common.XRouterPathConstants.Companion.NEWS_CONTENT
import com.yidian.common.XRouterPathConstants.Companion.NEWS_MAIN
......@@ -117,6 +118,18 @@ class NewsContentApplication : YdBaseApplication() {
}
}),
XPageNode(LIFE_ACCOUNT_IDENTITY, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, LifeAccountIdentityActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
}),
XPageNode(NEWS_CONTENT, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
......
package com.yidian.shenghuoquan.newscontent.bean
/**
* author: yinjiacheng
* date: 5/19/21 5:45 PM
* description: 生活号身份bean
*/
data class LifeAccountIdentityBean(val account: String, val identity: String)
package com.yidian.shenghuoquan.newscontent.ui
import android.graphics.Rect
import android.os.Bundle
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.yidian.common.XRouterPathConstants
import com.yidian.common.base.BaseActivity
import com.yidian.common.cardutils.adapter.OnItemClickListener
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.LifeAccountIdentityAdapter
import com.yidian.shenghuoquan.newscontent.bean.LifeAccountIdentityBean
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountIdentityBinding
/**
* author: yinjiacheng
* date: 5/19/21 4:47 PM
* description: 生活号身份选择
*/
class LifeAccountIdentityActivity : BaseActivity<ActivityLifeAccountIdentityBinding>(),
View.OnClickListener, OnItemClickListener<LifeAccountIdentityBean> {
override fun createViewBinding(): ActivityLifeAccountIdentityBinding {
return ActivityLifeAccountIdentityBinding.inflate(layoutInflater)
}
override fun getXPageName(): String {
return XRouterPathConstants.LIFE_ACCOUNT_IDENTITY
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
initView()
initListener()
initData()
}
private fun initView() {
viewBind.rvLifeAccountIdentity.layoutManager =
LinearLayoutManager(this, RecyclerView.VERTICAL, false)
viewBind.rvLifeAccountIdentity.addItemDecoration(LifeAccountIdentityItemDecoration())
viewBind.rvLifeAccountIdentity.adapter = LifeAccountIdentityAdapter()
}
private fun initListener() {
viewBind.btnEnterLifeAccount.setOnClickListener(this)
(viewBind.rvLifeAccountIdentity.adapter as LifeAccountIdentityAdapter).setOnItemClickListener(
this
)
}
private fun initData() {
val data: List<LifeAccountIdentityBean> =
listOf(
LifeAccountIdentityBean("一点资讯", "超级管理员"),
LifeAccountIdentityBean("生活圈", "普通管理员")
)
(viewBind.rvLifeAccountIdentity.adapter as LifeAccountIdentityAdapter).updateData(data)
}
override fun onClick(v: View?) {
val id = v?.id;
if (id == R.id.btn_enter_life_account) {
// TODO: 5/19/21 执行进入生活号逻辑
}
}
override fun onClick(view: View?, position: Int, item: LifeAccountIdentityBean?) {
// TODO: 5/19/21 选中某个身份
}
/**
* 自定义ItemDecoration
* 处理Item间隔
*/
class LifeAccountIdentityItemDecoration : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
outRect.top = 20
outRect.bottom = 20
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<stroke
android:width="1dp"
android:color="@color/homeGray" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<stroke
android:width="1dp"
android:color="@color/red_second" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_item_life_account_identity" android:state_selected="false" />
<item android:drawable="@drawable/bg_item_life_account_identity_selected" android:state_selected="true" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:includeFontPadding="false"
android:text="@string/life_account_identity_select"
android:textColor="#FF000000"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.nightmode.widget.YdRecyclerView
android:id="@+id/rv_life_account_identity"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"
android:paddingStart="30dp"
android:paddingEnd="30dp"
app:layout_constraintBottom_toTopOf="@id/btn_enter_life_account"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
<com.yidian.nightmode.widget.YdButton
android:id="@+id/btn_enter_life_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="@string/enter_life_account"
android:textColor="#FF000000"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</com.yidian.nightmode.widget.YdConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/selector_item_life_account_identity"
android:padding="20dp">
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_life_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:includeFontPadding="false"
android:singleLine="true"
android:textColor="#FF000000"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.nightmode.widget.YdTextView
android:id="@+id/tv_life_identity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:textColor="@color/homeGray"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</com.yidian.nightmode.widget.YdConstraintLayout>
\ No newline at end of file
......@@ -44,4 +44,9 @@
<string name="subscription">+ 订阅</string>
<string name="subscribed">已订阅</string>
<string name="divider">/</string>
<!--生活圈B端-->
<string name="life_account_identity_select">生活号身份选择</string>
<string name="enter_life_account">进入生活号</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment