ScrollView实现文本分批加载小构思

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/up"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="UP" />

    <Button
        android:id="@+id/down"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="DOWN" />

    <ScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="fill_parent">

        <TextView
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </ScrollView>

</LinearLayout>

MainActivity

package com.imooc.android_scrollview;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends Activity implements OnClickListener {

	private TextView tv;
	private ScrollView scroll;
	private Button up_btn;
	private Button down_btn;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);
		tv = (TextView) findViewById(R.id.content);
		tv.setText(getResources().getString(R.string.content));

		up_btn = (Button) findViewById(R.id.up);
		down_btn = (Button) findViewById(R.id.down);
		up_btn.setOnClickListener(this);
		down_btn.setOnClickListener(this);

		scroll = (ScrollView) findViewById(R.id.scroll);
		scroll.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				switch (event.getAction()) {
				case MotionEvent.ACTION_MOVE: {
					/**
					 * (1)getScrollY()————获取滚动条滑动的距离
					 * (2)getMeasuredHeight()包含隐藏的textview的高度
					 * (3)getHeight()显示在一屏幕的高度
					 */

					// 顶部状态
					if (scroll.getScrollY() <= 0) {
						Log.i("Main", "滑动到顶部");
					}

					// 底部状态
					// TextView的总高度<=一屏幕的高度+滚动条的滚动距离
					if (scroll.getChildAt(0).getMeasuredHeight() <= scroll
							.getHeight() + scroll.getScrollY()) {

						tv.append(getResources().getString(R.string.content));

					}
					break;
				}
				}

				return false;
			}
		});
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		// scrollTo:以滚动视图起始位置开始计算的(参考点游标)
		// scrollBy:相对前一次的位置,去滚动对应的距离(参考点游标)

		case R.id.up: {
			//定位到textview开始处
			scroll.scrollTo(0, 0);
			break;
		}

		case R.id.down: {

			scroll.scrollBy(0, 100);
			break;
		}
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 18:06:32

ScrollView实现文本分批加载小构思的相关文章

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

25.分批加载数据

解决数据库内容很多的情形: findAll()在该方法休眠3秒演示效果,需要创建一个线程去读取数据: 分批加载的好处:不用等待太久.节约流量.慢慢引导用户看感兴趣内容: 分批处理 解决的时候时间等待的问题 不能解决内存占用的问题. 要想解决内存占用问题,可以采用分页方式: 1.创建数据库的代码中 /** * 分批加载数据 * @param startIndex 开始的位置 * @param maxCount 每页展示的最大的条目 * @return */ public List<BlackNum

Android数据分批加载-滑动到底部自动加载列表

Android数据分批加载-滑动到底部自动加载列表 2014年5月9日 本博文介绍如何进行数据分批加载,在应用开发当中会经常使用到ListView,点击更多加载数据是我们经常简单,为了提供用户体验,当用户将列表滚动到底部自动加载数据,这样的形式用得比较多. 下面给大家提供的例子是,每次模拟20条数据,滑动到底部时再请求20条数据直到请求到限定页数为止 具体代码实现: /08_Datapageload/src/com/wwj/datapageload/MainActivity.java packa

Android 下分批加载数据以及listView使用过程中的优化

需求:在开发过程中,listview加载的数据如果比较大,这时为了提高用户体验感,我们应该事先分批加载以及下拉刷新功能 1.首先,数据访问层需要提供分批加载功能的接口, 代码如下: package com.zaizai.safty.db.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.

Android点滴---TextView,RadioButton 设置 HTML文本,加载网络图片

现在在做一个题库类的项目,由于有些数学符号或者化学符号之类的没办法直接在前端显示,所以就使用了图文混排: 后台返回的数据直接是HTML格式的数据. 所以就开始去研究控件如何去显示HTML 先贴上参考的文章,感谢分享! 1.这种只适合加载本地图片,或者兼容版本在4.0以下 Android中Textview显示带html文本二-------[Textview显示本地图片] 上面这种方式,只要在百度上搜一下 Android TextView 设置 HTML 数据,就会找出来很多类似的,但是感觉这为大神

图片预加载 小案例

1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 2 "http://www.w3.org/TR/html4/strict.dtd"> 3 4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 5 <head> 6 <meta http-equiv="Content

js滚动加载小插件

本文实例讲述了jquery滚动加载数据的方法.分享给大家供大家参考.具体分析如下: 少废话直接上代码!!!粗暴,直接,干脆 0//lk-2017-05-04 1(function($, win) { 2 var defaults = { 3 'container': '#container', //容器 4 'sections': '.section', //子容器 5 'searchname': '全部', //搜索名称 6 'url': '', //加载更多数据请求的路径 7 'updata

Loading加载小插件,用户可以选择html格式或canvas格式,自定义loading图片,canvas色彩搭配可根据个人喜好

;(function($) { $.Loading = function(options) { //暴漏插件默认值 $.Loading.defaults = { speed: 200, //弹出层淡出速度 bgcolor: 'rgba(0,0,0,.7)', //遮罩层颜色,需要rgba格式,默认黑色0.5透明度 type: "html", //默认html样式,也可以是canvas msg: '正在加载...', //默认加载信息 loadPicNum: 2, //为html时loa

Android: ListView数据的分批加载 以及 Handle 总结

这是效果图: activity_main.xml 01 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 02     xmlns:tools="http://schemas.android.com/tools" 03     android:layout_width="match_parent" 04     android:layout_he