오픈 소스 프로젝트 PullToRefresh 상세 설명 (3) - PullToRefreshScrollView

24662 단어 scrollview
앞의 글 과 마찬가지 로 레이아웃 파일 을 설정 한 다음 이 컨트롤 을 찾 습 니 다.다만 여 기 는 훨씬 간단 해 야 한다.
1. 레이아웃 파일
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- The PullToRefreshScrollView replaces a standard PullToRefreshScrollView widget. -->

    <com.handmark.pulltorefresh.library.PullToRefreshScrollView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/pull_refresh_scrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrMode="both" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="8dp"
            android:text="@string/filler_text"
            android:textSize="16sp" />
    </com.handmark.pulltorefresh.library.PullToRefreshScrollView>

</LinearLayout>

 
ScrollView 와 달리 리 니 어 레이아웃 으로 콘 텐 츠 를 만 드 는 용 기 를 넣 지 않 고 표시 할 것 을 넣 으 면 됩 니 다.
 
2. 컨트롤 을 찾 아 설정 합 니 다. 여기 Activity 코드 를 직접 붙 입 니 다.
/*******************************************************************************
 * Copyright 2011, 2012 Chris Banes.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.handmark.pulltorefresh.samples;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ScrollView;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;

public final class PullToRefreshScrollViewActivity extends Activity {

    PullToRefreshScrollView mPullRefreshScrollView;
    ScrollView mScrollView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ptr_scrollview);
        //    
        mPullRefreshScrollView = (PullToRefreshScrollView) findViewById(R.id.pull_refresh_scrollview);
        //
        mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener<ScrollView>() {

            @Override
            public void onRefresh(PullToRefreshBase<ScrollView> refreshView) {
                new GetDataTask().execute();
            }
        });

        mScrollView = mPullRefreshScrollView.getRefreshableView();
    }

    private class GetDataTask extends AsyncTask<Void, Void, String[]> {

        @Override
        protected String[] doInBackground(Void... params) {
            // Simulates a background job.
            try {
                Thread.sleep(4000);
            } catch (InterruptedException e) {
            }
            return null;
        }

        @Override
        protected void onPostExecute(String[] result) {
            // Do some stuff here

            // Call onRefreshComplete when the list has been refreshed.
            //
            mPullRefreshScrollView.onRefreshComplete();

            super.onPostExecute(result);
        }
    }

}

 
다음은 가로 스크롤 뷰.
1. 레이아웃 파일 은 textview 몇 개 입 니 다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- The PullToRefreshScrollView replaces a standard PullToRefreshScrollView widget. -->

    <com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/pull_refresh_horizontalscrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrMode="both" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:orientation="horizontal" >

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ff99cc00" />

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ffff4444" />

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ff33b5e5" />

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ffcc0000" />

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ffffbb33" />

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ff00ddff" />

            <TextView
                style="@style/HorizScrollViewItem"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="#ff669900" />
        </LinearLayout>
        
    </com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView>

</LinearLayout>

 
2. activity 의 코드 는 위 와 거의 같 습 니 다.
/*******************************************************************************
 * Copyright 2011, 2012 Chris Banes.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.handmark.pulltorefresh.samples;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.HorizontalScrollView;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView;

public final class PullToRefreshHorizontalScrollViewActivity extends Activity {

    PullToRefreshHorizontalScrollView mPullRefreshScrollView;
    HorizontalScrollView mScrollView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ptr_horizontalscrollview);

        mPullRefreshScrollView = (PullToRefreshHorizontalScrollView) findViewById(R.id.pull_refresh_horizontalscrollview);
        mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener<HorizontalScrollView>() {

            @Override
            public void onRefresh(PullToRefreshBase<HorizontalScrollView> refreshView) {
                new GetDataTask().execute();
            }
        });

        mScrollView = mPullRefreshScrollView.getRefreshableView();
    }

    private class GetDataTask extends AsyncTask<Void, Void, String[]> {

        @Override
        protected String[] doInBackground(Void... params) {
            // Simulates a background job.
            try {
                Thread.sleep(4000);
            } catch (InterruptedException e) {
            }
            return null;
        }

        @Override
        protected void onPostExecute(String[] result) {
            // Do some stuff here

            // Call onRefreshComplete when the list has been refreshed.
            mPullRefreshScrollView.onRefreshComplete();

            super.onPostExecute(result);
        }
    }

}

 
여기 서 저희 가 이 부분 을 주목 해 보도 록 하 겠 습 니 다.
  mPullRefreshScrollView = (PullToRefreshHorizontalScrollView) findViewById(R.id.pull_refresh_horizontalscrollview);
        mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener<HorizontalScrollView>() {

            @Override
            public void onRefresh(PullToRefreshBase<HorizontalScrollView> refreshView) {
                new GetDataTask().execute();
            }
        });
____________________________________________________________________________________________________
        mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener<ScrollView>() {

            @Override
            public void onRefresh(PullToRefreshBase<ScrollView> refreshView) {
                new GetDataTask().execute();
            }
        });
 

이 디자인 을 할 때 들 어 오 는 모델 을 통 해 모니터 의 내용 을 바 꾸 면 하나의 모니터 류 인 OnRefreshListener 로 여러 가지 조작 을 완성 할 수 있 고 디자인 이 매우 정교 합 니 다!

좋은 웹페이지 즐겨찾기