基本使用
仿ios页面惯性回弹效果,ios能行的,Android更能行,奉行这一原则,由于平时自己用的ios手机看了页面效果,确实体验很好,就想了一下为什么Android没有,其实android是可以有的,据非官方的消息称Android其实早就可以有了,只是谷歌疲于跟ios打官司,这才不屑开在原生上开发这一空能,事实证明,Android确实早就有了,很早以前view中就有了overscrollby方法,以及原生view上的overscrollmode,无一不证明,这是对的。其实讲道理处理好overscrollby 及onoverscrolled 即可轻松实现 惯性回弹效果(限于可滑动的viewgroup),本文不介绍这个
我想介绍两个我兴趣写的两个多功能的layout,,使用十分简单,两个layout均只需当作父容器使用技能,如果子容器中包含可滑动view,避免冲突在父容器上标记这个可滑动view的id,因采用nested接口所写,滑动效果除开,惯性回弹外,基本与material design滑动效果一致。
为什么叫它们多功能呢,因为我在其中包含了刷新加载更多的header跟footer的操作,可以说是一个常用框架
不多说了来使用把
OverScrollLayout
基本使用
在xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.sunsh.smartlayout.over.ListViewActivity">
<com.sunsh.layout.overscroll.OverScrollLayout
android:id="@+id/overscroll_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:overScrollMode="never"
android:layout_height="match_parent"/>
</com.sunsh.layout.overscroll.OverScrollLayout>
</android.support.constraint.ConstraintLayout>
在activity中
class ListViewActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_list_view)
OverScrollUtils.defaultConfigPullLoad(overscroll_layout)
overscroll_layout.setOnRefreshListener(object:OverScrollLayout.OnRefreshListener{
override fun onRefresh() {
overscroll_layout.postDelayed({overscroll_layout.refreshComplete()},3000)
}
override fun onLoading() {
overscroll_layout.postDelayed({overscroll_layout.loadMoreComplete()},3000)
}
})
listView.adapter = object : BaseAdapter() {
override fun getCount(): Int {
return 50
}
override fun getItem(position: Int): Any? {
return null
}
override fun getItemId(position: Int): Long {
return 0
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
var convertView = convertView
if (convertView == null) {
convertView = TextView(this@ListViewActivity)
convertView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 80)
convertView.textSize = 16f
convertView.text = position.toString() + "行"
convertView.gravity = Gravity.CENTER
}
return convertView
}
}
}
}
效果
下拉
上拉
SmartLayout
基本使用
在xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.sunsh.smartlayout.smat.WebViewActivity">
<com.sunsh.layout.smartlayout.SmartLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:overScrollMode="never"
android:layout_height="match_parent"/>
</com.sunsh.layout.smartlayout.SmartLayout>
</android.support.constraint.ConstraintLayout>