上次我们讲了单张图片的上下界面的显示和隐藏,已经左上角名字的刷新,现在我们讲一下分享以及右边的一堆菜单
他们涉及到一个类ShareActionProvider,这个类专门是用来用于分享的。界面在photo.xml中,整体是一个菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_import"
android:title="@string/Import"
android:icon="@drawable/ic_menu_ptp_holo_light"
android:showAsAction="always|withText"
android:visible="false" />
<item android:id="@+id/action_share_panorama"
android:icon="@drawable/ic_menu_share_holo_light"
android:title="@string/share_panorama"
android:visible="false"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom" />
<item android:id="@+id/action_share" ----分享菜单
android:icon="@drawable/ic_menu_share_holo_light"
android:title="@string/share"
android:visible="false"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="never" />
<item android:id="@+id/action_delete" ----删除菜单
android:icon="@drawable/ic_menu_trash_holo_light"
android:title="@string/delete"
android:visible="false"
android:showAsAction="never" />
<item android:id="@+id/action_slideshow" ----幻灯片菜单
android:icon="@drawable/ic_menu_slideshow_holo_light"
android:title="@string/slideshow"
android:showAsAction="never" />
<item android:id="@+id/action_edit" ----编辑菜单
android:title="@string/edit"
android:showAsAction="never"
android:visible="false" />
<item android:id="@+id/action_simple_edit"
android:title="@string/simple_edit"
android:showAsAction="never"
android:visible="false" />
<item android:id="@+id/action_rotate_ccw"
android:showAsAction="never"
android:title="@string/rotate_left" />
<item android:id="@+id/action_rotate_cw"
android:showAsAction="never"
android:title="@string/rotate_right" />
<item android:id="@+id/action_crop"
android:title="@string/crop_action"
android:showAsAction="never" />
<item android:id="@+id/action_trim"
android:title="@string/trim_action"
android:showAsAction="never" />
<item android:id="@+id/action_mute"
android:title="@string/mute_action"
android:showAsAction="never" />
<item android:id="@+id/action_setas"
android:title="@string/set_image"
android:showAsAction="never" />
<item android:id="@+id/action_details"
android:title="@string/details"
android:showAsAction="never" />
<item android:id="@+id/action_show_on_map"
android:title="@string/show_on_map"
android:showAsAction="never" />
<item android:id="@+id/print"
android:title="@string/print_image"
android:showAsAction="never" />
</menu>
分享放在上面的确太拥挤,太难看了,决定除了详细信息其他全部放到下面去。
我们首先在xml中删除菜单,然后根据菜单ID在JAVA文件中删除对应的处理代码即可。
需要注意的是,剩下的菜单要改属性,因为不再是伸缩性的菜单
android:showAsAction="ifRoom"
android:icon="@drawable/ic_menu_details" --自己要加一个新ICON
大家看到了没,所有的右边的菜单全部被删除了,只剩下一个按钮,这个按钮还是用的分享的按钮,但已经被我改成了详细信息的功能。
而详细信息的界面也很丑陋,
显示详细信息的代码为showDetails
private void showDetails() {
mShowDetails = true;
if (mDetailsHelper == null) {
mDetailsHelper = new DetailsHelper(mActivity, mRootPane, new MyDetailsSource());
mDetailsHelper.setCloseListener(new CloseListener() {
@Override
public void onClose() {
hideDetails();
}
});
}
mDetailsHelper.show();
}
寻找DetailsHelper类中发现DialogDetailsView才是它的显示实现
public DetailsHelper(AbstractGalleryActivity activity, GLView rootPane, DetailsSource source) {
mContainer = new DialogDetailsView(activity, source);
}
DetailsHelper在几个Page类中都是辅助使用,用以得知照片的详细信息。