0
点赞
收藏
分享

微信扫一扫

Android-ScrollView(基本实现,顶部判断,底部判断,底部加载更多)


1.回顾

    上篇学习了 ViewFlipper 的使用,实现了图片轮播 和 使用了 OnTonchListener 事件

2.重点

   (1)ScrollView

    (2)属性和方法

     (3)实例-判断顶部和底部

     (4)getScrollY() 一直为1.0 的 问题

3. ScrollView

             滚动视图 :分为 横向滚动视图(   水平 滚动视图)
                                                     :  <HorizontalScrollView ></HorizontalScrollView> 

                                       纵向滚动视图

                                                     :默认:ScrollView 

4. 属性和方法

  (1)重要属性

                设置 滚动条的出现 :


android:ScrollBar="none"

                代码设置:


setVertivalScrollBarEnabled(false);


   (2)方法

  setOnTouchListener (案列 :底部加载更多)
  getScrollY() : 滚动条滑动的距离
  getMeasuredHeight() : 当前ScrollView 所在的页面大小
  getHeight() :ScrollView 的高度

5.实现

    5.1 布局实现

          ScrollView 只能 有一个 子布局 ;


<ScrollView
android:id="@+id/scroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
>

<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/scroll_content" />

</ScrollView>


   5.2 OnTouchListener 实现


private int flag=0;

class ScrollOnTonchListener implements OnTouchListener{

@SuppressLint({ "NewApi", "ClickableViewAccessibility" })
@Override
public boolean onTouch(View v, MotionEvent event) {
//手势监听事件

//和 ViewFlipper 一样 需要判断 才能知道 怎么滑动
switch (event.getAction()) {

//移动的时候去判断;
case MotionEvent.ACTION_MOVE:
int h=scroll.getScrollY();
int t=scroll.getHeight()+h;

Log.i("scroll","scroll.getChildAt(0).getMeasuredHeight()="+scroll.getChildAt(0).getMeasuredHeight());
Log.i("scroll","scroll.getHeight()="+scroll.getHeight());
Log.i("scroll","scroll.getScaleY())="+h);
Log.i("scroll","scroll.getHeight()+(int)scroll.getScaleY()="+t);

//到顶部了
if(h<=0){
flag++;
if(flag%3==0){
Toast.makeText(getApplicationContext(), "到顶部了",Toast.LENGTH_SHORT).show();
}
}
//textview的高度 大于等于 滑动的大小+控件的大小时 到底部
if(scroll.getChildAt(0).getMeasuredHeight()<=t){
flag++;
if(flag%3==0){
Toast.makeText(getApplicationContext(), "到底部了",Toast.LENGTH_SHORT).show();
tv.append(getResources().getString(R.string.scroll_content));
}
}
break;

}

return false;
}

}


    5.3 设置监听


scroll=(ScrollView) findViewById(R.id.scroll);
tv=(TextView) findViewById(R.id.tv);
scroll.setOnTouchListener(new ScrollOnTonchListener());


    5.4 string.xml 数据

              我们已 %%%%%%%%%%%%%%%%%%%%%%%%% 为分界线,来分页;


<string name="scroll_content">
虽然我们彼此分隔异地,但因为爱情,所以我们距离很近。在每一个入睡的晚上,跟你说声晚安;在每一个醒来的早上,和你说声早安。
爱情不是奇遇,可是当我们在这样的奇遇中有了爱情,却早已注定了分离.适合走到最后的人,从一开始就是为了彼此而生的。
男人的心如铁树开花,一千年一次。据说,铁树开花不是好兆头。如果花败,一生无爱。女人的心如雪莲花,纯洁而柔爱,并且奇美。据说,雪莲花开在天山最高的地方。如果花败,一生白发。哀莫大于心死,所以在爱情路上,千万要走好,不要回头,但走完之后不后悔。
生命中,有些人,一旦遇见,便一眼万年;有些心动,一旦开始,便覆水难收;有些情,一旦眷恋,便海枯石烂;有些缘分,一旦交织,便在劫难逃。
爱情不合乎逻辑,这或许就是爱的逻辑。真正热爱的,或许并不是一个大家公认的最该爱,爱的最正确的人,而是一个使我忘乎所以,无法不爱的人。爱不是因为被爱,只是因为爱。
为什么你会为爱情而改变,只是因为,你害怕失去。当你恐惧失去一个人的时候,就会为他做很多,为他而改变自我。所以相爱的基础,并不是感情,而是恐惧,是没有办法失去彼此。当这种恐惧消失的时候,那就是不再爱了。所以,相爱就是害怕失去。没有害怕,就没有相爱。
我相信除了寂寞,缘分是男人和女人之间相爱的另一种原由。因为缘分而使两颗寂寞的心结合的爱情称为真爱。寂寞是每时每刻,缘分是不知不觉,真爱是一生一世。——《花样年华》
与其久久的思念一个人,还不如面对面表白。与其不死不活的拖着,还不如赶紧换人恋爱。感情的事最怕拖,因为拖到最后,结局必然不好,但青春却被消耗殆尽了。
爱情如果不落到穿衣、吃饭、睡觉、数钱这些实实在在的生活中去,是不会长久的。真正的爱情,就是不紧张,就是可以在他面前无所顾忌地打嗝、放屁、挖耳朵、流鼻涕;真正爱你的人,就是那个你可以不洗脸、不梳头、不化妆见到的那个人。
一个人如果连自己都不珍惜,又怎会有人珍惜?许多时候,你觉得没人爱你,没人疼你,没有对你好,首先就得反思一下,你自己是否爱自己,是否疼自己,是否对自己好。自私确实不好,但完全的无私就是对自己的伤害。所以啊,爱人先爱己。你爱自己有多少,别人爱你才有多少。
真爱会败给什么?%%%%%%%%%%%%%%%%%%%%%%%%% </string>


       5.5 效果图预览

                                                     

Android-ScrollView(基本实现,顶部判断,底部判断,底部加载更多)_加载更多

6. 问题

         在 使用 getScrollY() 方法的时候,出现了一个纠结一个小时的问题,就是 getScrollY()的值 一直是 1.0 ,开始以为是  模拟器的问题,后再手机上测试了,还是不行;

         解决:通过查看 getScrollY() 方法 ,发现它有两个 返回值 一个 int , 一个 float , 后 将值 赋值给 int 类型后,就可以使用了;而直接 相加的为 float 类型;

   

7.demo 下载


举报

相关推荐

0 条评论