android CollapsingToolbarLayout+RecyclerView折叠+baseRecyclerViewAdapterHelper
activity代码
package com.nyw.folddemo
import android.graphics.Color
import android.graphics.PorterDuff
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import com.bumptech.glide.Glide
import com.chad.library.adapter.base.baseQuickAdapter
import com.chad.library.adapter.base.viewholder.baseViewHolder
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.AppBarLayout.onOffsetChangedListener
import com.nyw.folddemo.view.RecyManager
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
lateinit var adapter: baseQuickAdapter
var homeDataList: MutableList = mutableListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView();
}
private fun initView() {
initAdapter()
}
fun initAdapter(){
RecyManager.setbaseVertical(this, rcv_data)
RecyManager.setItemDecoration(rcv_data, 15, 15, 0, 0)
adapter = object : baseQuickAdapter(R.layout.layout_index_item,
mutableListOf()){
override fun convert(holder: baseViewHolder, item: HomeItem) {
Glide.with(context).load(item.imgUrl).error(R.mipmap.m1)
.into(holder.getView(R.id.iv_img))
holder.setText(R.id.tv_title,item.title)
}
}
rcv_data.adapter=adapter
for (i in 1..20){
var homeItem :HomeItem = HomeItem()
homeItem.title="好看的小姐姐"
homeItem.imgUrl=""
homeDataList.add(homeItem)
}
adapter.setList(homeDataList)
}
}
themes.xml文件
- @color/purple_500
- @color/purple_700
- @color/white
- @color/teal_200
- @color/teal_700
- @color/black
- ?attr/colorPrimaryVariant
- @color/purple_200
- @color/purple_200
- @color/purple_200
- @color/gray_f5
180dp 16dp 16dp
recyclerView设置布局管理器代码
package com.nyw.folddemo.view
import android.annotation.SuppressLint
import android.content.Context
import androidx.recyclerview.widget.*
object RecyManager {
//设置item的间距
fun setItemDecoration(recyclerView: RecyclerView, space_top: Int, space_bottom: Int, space_left: Int, space_right: Int){
recyclerView.addItemDecoration(SpaceItemDecoration(space_top, space_bottom, space_left, space_right))
}
//竖向滑动
@SuppressLint("WrongConstant")
fun setbaseVertical(mContext: Context, recyclerView: RecyclerView): LinearLayoutManager {
val layoutManager = LinearLayoutManager(mContext)
//设置为垂直布局,这也是默认的
layoutManager.orientation = OrientationHelper.VERTICAL
//设置增加或删除条目的动画
recyclerView.itemAnimator = DefaultItemAnimator()
//设置布局管理器
recyclerView.layoutManager = layoutManager
return layoutManager
}
//横向滑动
@SuppressLint("WrongConstant")
fun setHorizontalbase(mContext: Context, recyclerView: RecyclerView): LinearLayoutManager {
val layoutManager = LinearLayoutManager(mContext)
//设置为垂直布局,这也是默认的
layoutManager.orientation = OrientationHelper.HORIZonTAL
//设置增加或删除条目的动画
recyclerView.itemAnimator = DefaultItemAnimator()
//设置布局管理器
recyclerView.layoutManager = layoutManager
return layoutManager
}
//Grid
fun setGridbase(mContext: Context, recyclerView: RecyclerView, line: Int) {
val layoutManager = GridLayoutManager(mContext, line)
//设置增加或删除条目的动画
recyclerView.itemAnimator = DefaultItemAnimator()
//设置布局管理器
recyclerView.layoutManager = layoutManager
}
}
SpaceItemDecoration类
package com.nyw.folddemo.view
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.RecyclerView
class SpaceItemDecoration(var space_top: Int, var space_bottom: Int, var space_left: Int, var space_right: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
super.getItemOffsets(outRect, view, parent, state)
outRect.top = space_top
outRect.bottom = space_bottom
outRect.left = space_left
outRect.right = space_right
}
}
HomeItem类
package com.nyw.folddemo
class HomeItem {
var imgUrl :String = ""
var title :String = ""
}
build.gradle
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
//不需要findViewById
apply plugin: 'kotlin-android-extensions'
android {
compileSdk 32
defaultConfig {
applicationId "com.nyw.folddemo"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.github.CymChad:baseRecyclerViewAdapterHelper:3.0.4'
implementation 'com.github.bumptech.glide:glide:4.11.0'
}
demo代码
(101条消息) kotlinCollapsingToolbarLayout+RecyclerView折叠-Android文档类资源-CSDN文库



