web-dev-qa-db-ja.com

SwipeRefreshLayout:スワイプ進行アニメーション

私はAndroid=を初めて使用し、Google Webサイトでサンプルコードを調べています。現在使用しているコードはSwipeRefreshLayoutです。 http://developer.Android .com/samples/SwipeRefreshLayoutBasic/index.html

コードでは、リストビューに対してSwipeRefreshLayoutが実行されていることがわかります。つまり、リストビューを下にドラッグすると、メソッドがトリガーされ、リストビュー自体が更新されます。

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

    <ListView
          Android:id="@Android:id/list"
          Android:layout_width="match_parent"
          Android:layout_height="match_parent" />

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

混乱しているのは、リストビューを下にドラッグしたときにリストビューの上部に表示される進行状況アニメーションバーのコードにレイアウトがないことです。 SwipeRefreshLayoutは、ユーザーがxmlでレイアウトを指定する必要なく、下にドラッグするとプログレスアニメーションバーを自動的に生成すると思いますか?

たとえば、更新時にアニメーションが画面の端に触れないように、進行状況アニメーションバーの両端にパディングを配置したい場合、どうすればよいでしょうか。

https://developer.Android.com/reference/Android/support/v4/widget/SwipeRefreshLayout.html は実際には何も言っていません。

13
Simon

あなたできませんアニメーションを変更します。

SwipeRefreshLayoutでは、あまりカスタマイズできません。これは、開発者が一般的なパターンに固執するためのGoogleの試みだと思います。スタイルを設定できるのは、setColorScheme()で指定されたアニメーションの4色です。

SwipeRefreshLayoutは、事前に定義されたアニメーションを上部に表示するよう注意します。これは、canChildScrollUp()がfalseを返し、ユーザーが「プルダウン」した場合、またはsetRefreshing(true)を設定した場合です。 setRefreshing(false)を使用してアニメーションをオフにします。リスナーのメソッドonRefreshing()にロジックを配置します。 ListViewSwipeRefreshLayoutでないものを入れた場合は、canChildScrollUp()をオーバーライドします。ここから先に進んでください。

24
Gil Vegliach

あなたはそれを変更することはできませんが、それを非表示にして、トリガーされたら自分のものを表示することができます:-)

SwipeRefreshLayout swiperefresh = (SwipeRefreshLayout)root.findViewById(R.id.swiperefresh);
swiperefresh.setOnRefreshListener(this);
swiperefresh.setColorSchemeColors(0,0,0,0);
swiperefresh.setProgressBackgroundColor(Android.R.color.transparent); 

ノート:

  • eclipseでは、これをコンパイルするために@SuppressLint( "ResourceAsColor")を追加する必要があります。

  • それでも適切な時点でsetRefreshing(false)を呼び出す必要があります。そうしないと、onRefreshが再度トリガーされません。

11
SteelBytes