Android 页面惯性回弹效果,Nested接口接口简单实现。

基本使用

  • 仿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>

这里写图片描述

这里写图片描述

参照demo

Android自己的页面惯性回弹效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值