package com.lixinxinlove.recyclerviewdemo
import android.content.Context
import android.content.res.Resources
import android.os.Bundle
import android.util.Log
import android.util.TypedValue
import android.view.View
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.lixinxinlove.recyclerviewdemo.adapter.MyAdapter
import okhttp3.*
import java.io.IOException
import java.util.*
import java.util.concurrent.TimeUnit
class MainActivity : AppCompatActivity() {
private lateinit var fixedLayout: LinearLayout
private lateinit var recyclerView: RecyclerView
private lateinit var mAdapter: MyAdapter
private lateinit var mData: MutableList<String>
private lateinit var headerView: LinearLayout
private lateinit var innerLayout: LinearLayout
private lateinit var titleView: TextView
private lateinit var banner: View
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fixedLayout = findViewById(R.id.flex_layout)
recyclerView = findViewById(R.id.recycler_View)
recyclerView.layoutManager = LinearLayoutManager(this)
headerView = View.inflate(this, R.layout.hander_view, null) as LinearLayout
innerLayout = headerView!!.findViewById(R.id.inner_layout)
titleView = headerView!!.findViewById(R.id.title_view)
banner = headerView!!.findViewById(R.id.banner)
initData()
initListener()
}
private fun initData() {
mData = ArrayList()
for (i in 0..99) {
mData.add("lee$i")
}
mAdapter = MyAdapter(mData)
mAdapter.addHeaderView(headerView)
recyclerView.adapter = mAdapter
}
var mmRvScrollY = 0
private fun initListener() {
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
Log.e("onScrolled", "newState: $newState")
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
mmRvScrollY += dy
Log.e("onScrolled", "onScrolled: mmRvScrollY: $mmRvScrollY, dy: $dy")
changeUI(mmRvScrollY)
}
})
}
private fun changeUI(y: Int) {
//滑动到选择日期 悬浮
if (y >= banner.height) {
if (titleView.parent !== fixedLayout) {
innerLayout.removeView(titleView)
fixedLayout.addView(titleView)
}
} else {
if (titleView.parent !== innerLayout) {
fixedLayout.removeView(titleView)
innerLayout.addView(titleView)
}
}
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
fun dip2px(context: Context, dpValue: Float): Int {
val scale = context.resources.displayMetrics.density
return (dpValue * scale + 0.5f).toInt()
}
fun dp2px(dpValue: Float): Float {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, Resources.getSystem().displayMetrics)
}
fun onPos(view: View?) {
recyclerView.scrollToPosition(0)
mmRvScrollY = 0
changeUI(mmRvScrollY)
recyclerView.postDelayed({ recyclerView.scrollBy(0, banner.height) }, 50)
recyclerView.postDelayed({
recyclerView.scrollToPosition(0)
mmRvScrollY = 0
changeUI(mmRvScrollY)
}, 3000)
// onOkHttp()
// startActivity(Intent(this,GestureDetectorActivity::class.java))
}
fun onOkHttp() {
val mOkHttp = OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.build()
val mRequest: Request = Request.Builder()
.get()
.url("https:www.baidu.com")
.build()
val mCall: Call = mOkHttp.newCall(mRequest)
Log.e("Callback", Thread.currentThread().name)
mCall.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
Log.e("Callback", "请求失败")
}
override fun onResponse(call: Call, response: Response) {
// Log.e("Callback", response.body()!!.string())
Log.e("Callback", Thread.currentThread().name)
}
})
mCall.cancel()
}
}
网友评论