2015-09-03 2 views
1

Мне удалось найти множество реализаций для обновления приложений для Android. Однако я не могу найти то, что я хочу. Он уже используется в Google Chrome для Android, но также используются другие приложения (NovaLauncher, AliExpress и многие другие).Android - реализовать pull для обновления, например Chrome

Вот как это выглядит: enter image description here

Когда вы тянете вниз, есть небольшой круг стрелка показано на рисунке. Как я могу реализовать то же самое в своем приложении?

ответ

2

Попробуйте это.

Layout XML:

<android.support.v4.widget.SwipeRefreshLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/swipe_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:text="@string/hello_world" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:gravity="center"/> 
    </ScrollView> 

</android.support.v4.widget.SwipeRefreshLayout> 

MainActivity (который реализует SwipeRefreshLayout):

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container); 
    swipeLayout.setOnRefreshListener(this); 
    swipeLayout.setColorScheme(android.R.color.holo_blue_bright, 
      android.R.color.holo_green_light, 
      android.R.color.holo_orange_light, 
      android.R.color.holo_red_light); 
} 


@Override public void onRefresh() { 
    new Handler().postDelayed(new Runnable() { 
     @Override public void run() { 
      swipeLayout.setRefreshing(false); 
     } 
    }, 5000); 
} 

Более подробную информацию, проверить эту ссылку:
http://www.androidhive.info/2015/05/android-swipe-down-to-refresh-listview-tutorial/

3

Там является nice tutorial об этом.

В основном вам нужно положить что-то вы хотите, чтобы обновить внутри SwipeRefreshLayout

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/activity_main_swipe_refresh_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <ListView 
      android:id="@+id/activity_main_listview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      > 
     </ListView> 

    </android.support.v4.widget.SwipeRefreshLayout> 

Установить адаптер

class MainActivity extends Activity { 

    ListView mListView; 
    SwipeRefreshLayout mSwipeRefreshLayout; 
    Adapter mAdapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.acivity_main); 
    SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout); 
    mListView = findViewById(R.id.activity_main_list_view); 
mListView.setAdapter(new ArrayAdapter<String>(){ 
    String[] fakeTweets = getResources().getStringArray(R.array.fake_tweets); 
    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fakeTweets) 
    listView.setAdapter(mAdapter); 
    }); 
    } 
} 

И присоединять setOnRefreshListener

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    ... 
    listView.setAdapter(); 
    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      doSomething(); 
    } 
+0

Извините за двойной пост, у меня возникли проблемы с подключением к Интернету – Miljac

+0

Thx, я понял. Мы также должны указать, что наша деятельность реализует «SwipeRefreshLayout.OnRefreshListener», а затем переопределяет onRefresh. Очень просто. – user1209216

0

Я реализовал это на моей странице Xhtml. Прекрасно работает.

<script type="text/javascript">   //<![CDATA[ 
     window.addEventListener('load', function() { 
       var maybePreventPullToRefresh = false; 
       var lastTouchY = 0; 
       var touchstartHandler = function(e) { 
       if (e.touches.length != 1) return; 
       lastTouchY = e.touches[0].clientY; 
       // Pull-to-refresh will only trigger if the scroll begins when the 
       // document's Y offset is zero. 
       maybePreventPullToRefresh = 
        window.pageYOffset == 0; 
       } 

       var touchmoveHandler = function(e) { 
       var touchY = e.touches[0].clientY; 
       var touchYDelta = touchY - lastTouchY; 
       lastTouchY = touchY; 

       if (maybePreventPullToRefresh) { 
        // To suppress pull-to-refresh it is sufficient to preventDefault the 
        // first overscrolling touchmove. 
        maybePreventPullToRefresh = false; 
        if (touchYDelta > 0) { 
        e.preventDefault(); 
        return; 
        } 
       } 
       } 

       document.addEventListener('touchstart', touchstartHandler, false); 
       document.addEventListener('touchmove', touchmoveHandler, false);  }); 
       //]]> </script> 

 Смежные вопросы

  • Нет связанных вопросов^_^