我的问题更多的是从设计的角度来看,与材料设计理念有关。 所有最新的应用程序现在都可以完全依赖于滑动刷新 UX模式(如果可以应用它)(例如地图活动因为它们接管滑动手势而无法拥有它)?它是否被视为“old-school”在工具栏中放置一个刷新图标(图片中的ActionBar具有它的方式)?
因为我的应用向用户显示实时统计信息,我希望确保90%的用户能够立即知道如何刷新它们。
答案 0 :(得分:2)
您可以将其替换为SwipeRefreshLayout
。
将此内容添加到您的xml
文件中:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/mList"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
并向您java
提交此文件:
SwipeRefreshLayout mRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.refreshLayout);
handler.postDelayed(refreshing, 100);
mRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// YOUR TASK HERE.
}
});
修改强>
为了让用户知道您的应用中有刷新,您可以使用此功能在每次应用打开时自动刷新:
private Handler handler = new Handler();
private final Runnable refreshing = new Runnable() {
public void run() {
mRefreshLayout.setRefreshing(true);
try {
if (mRefreshLayout.isRefreshing()) {
// YOUR TASK HERE.
handler.removeCallbacks(this);
} else {
mRefreshLayout.setRefreshing(false);
}
} catch (Exception e) {
Log.e("", e.getMessage(), e);
}
}
};
在onPreExecute()
的任务中添加此内容:
if (!mRefreshLayout.isRefreshing()) {
mRefreshLayout.setRefreshing(true);
}
并在onPostExecute()
中添加:
mRefreshLayout.setRefreshing(false);
在定义
handler.postDelayed(refreshing, 100);
视图后,不要忘记SwipeRefreshLayout
。
答案 1 :(得分:1)
https://www.google.de/design/spec/patterns/swipe-to-refresh.html
或者,手动刷新方法要求用户通过操作或手势启动内容更新。
注意:动作或手势。
材料设计指南并没有禁止按钮,它根本就没有强调它。但如果它对你的应用程序来说是一个重要的动作,你当然应该使用它。