Android 工具栏中的刷新图标现在是否被认为已弃用('swipe to refresh' 是否完全取代了它)?
Is a refresh icon in an Android Toolbar considered deprecated now (did 'swipe to refresh' totally take its place)?
我的问题更多是从设计的角度出发,涉及到Material的设计理念。
那么,所有最新的应用程序现在是否都完全依赖 滑动刷新 UX 模式,如果可以应用它(例如,地图活动不能拥有它,因为它们接管了滑动手势)?是不是也"old-school"在Toolbar里放一个刷新图标(就是图中这个ActionBar的样子)?
因为我的应用程序向用户显示实时统计信息,我想确保 90% 的用户会立即知道如何刷新它们。
您可以将其替换为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);
Don't forget handler.postDelayed(refreshing, 100);
after defining the SwipeRefreshLayout
view.
https://www.google.de/design/spec/patterns/swipe-to-refresh.html
Alternatively, the manual refresh method requires users to initiate content updates via an action or gesture.
注意:一个动作或手势。
material设计指南并没有禁止按钮,只是没有给予这样的重视。但如果它对您的应用来说是一个重要的操作,您当然应该使用它。
我的问题更多是从设计的角度出发,涉及到Material的设计理念。 那么,所有最新的应用程序现在是否都完全依赖 滑动刷新 UX 模式,如果可以应用它(例如,地图活动不能拥有它,因为它们接管了滑动手势)?是不是也"old-school"在Toolbar里放一个刷新图标(就是图中这个ActionBar的样子)?
因为我的应用程序向用户显示实时统计信息,我想确保 90% 的用户会立即知道如何刷新它们。
您可以将其替换为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);
Don't forget
handler.postDelayed(refreshing, 100);
after defining theSwipeRefreshLayout
view.
https://www.google.de/design/spec/patterns/swipe-to-refresh.html
Alternatively, the manual refresh method requires users to initiate content updates via an action or gesture.
注意:一个动作或手势。
material设计指南并没有禁止按钮,只是没有给予这样的重视。但如果它对您的应用来说是一个重要的操作,您当然应该使用它。