现在的位置: 首页 > 综合 > 正文

【ScrollView】实现类网页回到顶部FrameLayout+ScrollView+Button

2017年10月29日 ⁄ 综合 ⁄ 共 2409字 ⁄ 字号 评论关闭

情景:应用中可滚动内容过多的话,回到顶部需要滚动多次。今天做个小效果,仿网页的回到顶部功能。

如下图


方案:采用帧布局FrameLayout 有两个Button,包含一个ScrollView,两个Button分别跳转至顶部和底部

布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
     <ScrollView
        android:id="@+id/sc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="What is Application
  Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。

  android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类.且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局 的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过Application来进行一些,数据传递,数据共享 等,数据缓存等操作。
  MemoryLeak
  在Java中内存泄漏是只,某个(某些)对象已经不在被使用应该被gc所回收,但有一个对象持有这个对象的引用而阻止这个对象被回收。比如我 们通常会这样创建一个View TextView tv = new TextView(this);这里的this通常都是Activity。所以这个TextView就持有着这个Activity的引用。下面看张图 (Google IO 2011 ppt中抄得)
                " >
            </TextView>
        </LinearLayout>
    </ScrollView>

    <Button
        android:id="@+id/btn_toTop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:text="^" />

    <Button
        android:id="@+id/btn_toBottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="V" />

</FrameLayout>

代码:

public class MainActivity extends Activity {
	private Button topBtn, bottomBtn;
	private ScrollView sc;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		sc = (ScrollView) findViewById(R.id.sc);
		topBtn = (Button) findViewById(R.id.btn_toTop);
		bottomBtn = (Button) findViewById(R.id.btn_toBottom);
		topBtn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				sc.post(new Runnable() {
							public void run() {
								// 滚动至顶部
								sc.fullScroll(ScrollView.FOCUS_UP);
							}
						});


			}
		});
		bottomBtn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				sc.post(new Runnable() {
							public void run() {
								// 滚动到底部
								sc.fullScroll(ScrollView.FOCUS_DOWN);
							}
						});
			}
		});

	}

}

实现起来非常简单:今天朋友提得一个小需求。效果图如下:点击左上按钮到内容最底部,右下角按钮同理


 下载地址(免积分)

抱歉!评论已关闭.