直接看栗子吧,效果基本实现,界面微调和弹窗的优化,去做的话会很耗时说,暂时就酱紫了。上传效果动态图太大了,直接手机截图的效果图如下:
至于代码的实现主要就是自定义的菜单栏,和用 PopupWindow 实现弹窗了。仔细看代码很好懂的。
1.主界面布局代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" ><span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/frame_content"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;"> android:layout_above</span><span style="color: #0000ff;">="@+id/frameMenu"</span><span style="color: #ff0000;"> android:layout_alignParentTop</span><span style="color: #0000ff;">="true"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/frameMenu"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_alignParentBottom</span><span style="color: #0000ff;">="true"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">LinearLayout </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;"> android:background</span><span style="color: #0000ff;">="@color/skin_tabbar_bg"</span><span style="color: #ff0000;"> android:orientation</span><span style="color: #0000ff;">="horizontal"</span> <span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 动态 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/layout_at"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_weight</span><span style="color: #0000ff;">="1"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ImageView </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/image_at"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="top|center"</span><span style="color: #ff0000;"> android:src</span><span style="color: #0000ff;">="@drawable/skin_tabbar_icon_auth_select"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="bottom|center"</span><span style="color: #ff0000;"> android:text</span><span style="color: #0000ff;">="@string/skin_tabbar_icon_auth"</span><span style="color: #ff0000;"> android:textColor</span><span style="color: #0000ff;">="@android:color/black"</span><span style="color: #ff0000;"> android:textSize</span><span style="color: #0000ff;">="12sp"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 与我相关 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/layout_auth"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_weight</span><span style="color: #0000ff;">="1"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ImageView </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/image_auth"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="top|center"</span><span style="color: #ff0000;"> android:src</span><span style="color: #0000ff;">="@drawable/skin_tabbar_icon_at_select"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="bottom|center"</span><span style="color: #ff0000;"> android:text</span><span style="color: #0000ff;">="@string/skin_tabbar_icon_at"</span><span style="color: #ff0000;"> android:textColor</span><span style="color: #0000ff;">="@android:color/black"</span><span style="color: #ff0000;"> android:textSize</span><span style="color: #0000ff;">="12sp"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 留白 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_weight</span><span style="color: #0000ff;">="1"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 我的空间 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/layout_space"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_weight</span><span style="color: #0000ff;">="1"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ImageView </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/image_space"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="top|center"</span><span style="color: #ff0000;"> android:src</span><span style="color: #0000ff;">="@drawable/skin_tabbar_icon_space_select"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="bottom|center"</span><span style="color: #ff0000;"> android:text</span><span style="color: #0000ff;">="@string/skin_tabbar_icon_space"</span><span style="color: #ff0000;"> android:textColor</span><span style="color: #0000ff;">="@android:color/black"</span><span style="color: #ff0000;"> android:textSize</span><span style="color: #0000ff;">="12sp"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 玩吧 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">FrameLayout </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/layout_more"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_weight</span><span style="color: #0000ff;">="1"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ImageView </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/image_more"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="top|center"</span><span style="color: #ff0000;"> android:src</span><span style="color: #0000ff;">="@drawable/skin_tabbar_icon_more_select"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_gravity</span><span style="color: #0000ff;">="bottom|center"</span><span style="color: #ff0000;"> android:text</span><span style="color: #0000ff;">="@string/skin_tabbar_icon_more"</span><span style="color: #ff0000;"> android:textColor</span><span style="color: #0000ff;">="@android:color/black"</span><span style="color: #ff0000;"> android:textSize</span><span style="color: #0000ff;">="12sp"</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">LinearLayout</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">LinearLayout </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="1px"</span><span style="color: #ff0000;"> android:background</span><span style="color: #0000ff;">="@android:color/black"</span> <span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">LinearLayout</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 中间按钮背景 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ImageView </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/toggle_btn"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_alignParentBottom</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"> android:layout_alignTop</span><span style="color: #0000ff;">="@+id/frameMenu"</span><span style="color: #ff0000;"> android:layout_centerInParent</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"> android:src</span><span style="color: #0000ff;">="@drawable/skin_tabbar_btn"</span> <span style="color: #0000ff;">/></span> <span style="color: #008000;"><!--</span><span style="color: #008000;"> 中间按钮 </span><span style="color: #008000;">--></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ImageView </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/plus_btn"</span><span style="color: #ff0000;"> android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;"> android:layout_alignParentBottom</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"> android:layout_alignTop</span><span style="color: #0000ff;">="@+id/frameMenu"</span><span style="color: #ff0000;"> android:layout_centerInParent</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"> android:src</span><span style="color: #0000ff;">="@drawable/skin_tabbar_icon_select"</span> <span style="color: #0000ff;">/></span>
</RelativeLayout>
2.弹窗布局,就是几个图标的显示,比较简单的,可以看代码
3.然后就是主界面逻辑代码了,菜单栏按钮事件控制页面的显示,可以图标的选中状态,已经弹窗的实现,代码如下:
package com.yanis.yc_ui_qzone;import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener;
public class MainActivity extends FragmentActivity implements OnClickListener { // 定义Fragment页面 private FragmentAt fragmentAt; private FragmentAuth fragmentAuth; private FragmentSpace fragmentSpace; private FragmentMore fragmentMore; // 定义布局对象 private FrameLayout atFl, authFl, spaceFl, moreFl;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 定义图片组件对象</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> ImageView atIv, authIv, spaceIv, moreIv; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 定义按钮图片组件</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> ImageView toggleImageView, plusImageView; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 定义PopupWindow</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> PopupWindow popWindow; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取手机屏幕分辨率的类</span> <span style="color: #0000ff;">private</span><span style="color: #000000;"> DisplayMetrics dm; @Override </span><span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onCreate(Bundle savedInstanceState) { </span><span style="color: #0000ff;">super</span><span style="color: #000000;">.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 初始化默认为选中点击了“动态”按钮</span>
clickAtBtn(); }
</span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 初始化组件 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> initView() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化布局对象</span> atFl =<span style="color: #000000;"> (FrameLayout) findViewById(R.id.layout_at); authFl </span>=<span style="color: #000000;"> (FrameLayout) findViewById(R.id.layout_auth); spaceFl </span>=<span style="color: #000000;"> (FrameLayout) findViewById(R.id.layout_space); moreFl </span>=<span style="color: #000000;"> (FrameLayout) findViewById(R.id.layout_more); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化图片组件对象</span> atIv =<span style="color: #000000;"> (ImageView) findViewById(R.id.image_at); authIv </span>=<span style="color: #000000;"> (ImageView) findViewById(R.id.image_space); spaceIv </span>=<span style="color: #000000;"> (ImageView) findViewById(R.id.image_space); moreIv </span>=<span style="color: #000000;"> (ImageView) findViewById(R.id.image_more); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化按钮图片组件</span> toggleImageView =<span style="color: #000000;"> (ImageView) findViewById(R.id.toggle_btn); plusImageView </span>=<span style="color: #000000;"> (ImageView) findViewById(R.id.plus_btn); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 初始化数据 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> initData() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 给布局对象设置监听</span> atFl.setOnClickListener(<span style="color: #0000ff;">this</span><span style="color: #000000;">); authFl.setOnClickListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">); spaceFl.setOnClickListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">); moreFl.setOnClickListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 给按钮图片设置监听</span> toggleImageView.setOnClickListener(<span style="color: #0000ff;">this</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 点击事件 </span><span style="color: #008000;">*/</span><span style="color: #000000;"> @Override </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View v) { </span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (v.getId()) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 点击动态按钮</span> <span style="color: #0000ff;">case</span><span style="color: #000000;"> R.id.layout_at: clickAtBtn(); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 点击与我相关按钮</span> <span style="color: #0000ff;">case</span><span style="color: #000000;"> R.id.layout_auth: clickAuthBtn(); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 点击我的空间按钮</span> <span style="color: #0000ff;">case</span><span style="color: #000000;"> R.id.layout_space: clickSpaceBtn(); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 点击更多按钮</span> <span style="color: #0000ff;">case</span><span style="color: #000000;"> R.id.layout_more: clickMoreBtn(); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 点击中间按钮</span> <span style="color: #0000ff;">case</span><span style="color: #000000;"> R.id.toggle_btn: clickToggleBtn(); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; } } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 点击了“动态”按钮 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> clickAtBtn() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化Fragment页面</span> fragmentAt = <span style="color: #0000ff;">new</span><span style="color: #000000;"> FragmentAt(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 得到Fragment事务管理器</span> FragmentTransaction fragmentTransaction = <span style="color: #0000ff;">this</span><span style="color: #000000;"> .getSupportFragmentManager().beginTransaction(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 替换当前的页面</span>
fragmentTransaction.replace(R.id.frame_content, fragmentAt); // 事务管理提交 fragmentTransaction.commit(); // 改变选中状态 atFl.setSelected(true); atIv.setSelected(true);
authFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); authIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); spaceFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); spaceIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); moreFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); moreIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 点击了“与我相关”按钮 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> clickAuthBtn() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化Fragment页面</span> fragmentAuth = <span style="color: #0000ff;">new</span><span style="color: #000000;"> FragmentAuth(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 得到Fragment事务管理器</span> FragmentTransaction fragmentTransaction = <span style="color: #0000ff;">this</span><span style="color: #000000;"> .getSupportFragmentManager().beginTransaction(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 替换当前的页面</span>
fragmentTransaction.replace(R.id.frame_content, fragmentAuth); // 事务管理提交 fragmentTransaction.commit();
atFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); atIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); authFl.setSelected(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">); authIv.setSelected(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">); spaceFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); spaceIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); moreFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); moreIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 点击了“我的空间”按钮 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> clickSpaceBtn() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化Fragment页面</span> fragmentSpace = <span style="color: #0000ff;">new</span><span style="color: #000000;"> FragmentSpace(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 得到Fragment事务管理器</span> FragmentTransaction fragmentTransaction = <span style="color: #0000ff;">this</span><span style="color: #000000;"> .getSupportFragmentManager().beginTransaction(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 替换当前的页面</span>
fragmentTransaction.replace(R.id.frame_content, fragmentSpace); // 事务管理提交 fragmentTransaction.commit();
atFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); atIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); authFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); authIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); spaceFl.setSelected(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">); spaceIv.setSelected(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">); moreFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); moreIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 点击了“更多”按钮 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> clickMoreBtn() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 实例化Fragment页面</span> fragmentMore = <span style="color: #0000ff;">new</span><span style="color: #000000;"> FragmentMore(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 得到Fragment事务管理器</span> FragmentTransaction fragmentTransaction = <span style="color: #0000ff;">this</span><span style="color: #000000;"> .getSupportFragmentManager().beginTransaction(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 替换当前的页面</span>
fragmentTransaction.replace(R.id.frame_content, fragmentMore); // 事务管理提交 fragmentTransaction.commit();
atFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); atIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); authFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); authIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); spaceFl.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); spaceIv.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); moreFl.setSelected(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">); moreIv.setSelected(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 点击了中间按钮 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> clickToggleBtn() { showPopupWindow(toggleImageView); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 改变按钮显示的图片为按下时的状态</span> plusImageView.setSelected(<span style="color: #0000ff;">true</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 改变显示的按钮图片为正常状态 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> changeButtonImage() { plusImageView.setSelected(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">); } </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * 显示PopupWindow弹出菜单 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> showPopupWindow(View parent) { </span><span style="color: #0000ff;">if</span> (popWindow == <span style="color: #0000ff;">null</span><span style="color: #000000;">) { LayoutInflater layoutInflater </span>=<span style="color: #000000;"> (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view </span>= layoutInflater.inflate(R.layout.popwindow_layout, <span style="color: #0000ff;">null</span><span style="color: #000000;">); dm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建一个PopuWidow对象</span> popWindow = <span style="color: #0000ff;">new</span><span style="color: #000000;"> PopupWindow(view, dm.widthPixels, LinearLayout.LayoutParams.WRAP_CONTENT); } </span><span style="color: #008000;">//</span><span style="color: #008000;"> 使其聚集 ,要想监听菜单里控件的事件就必须要调用此方法</span> popWindow.setFocusable(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置允许在外点击消失</span> popWindow.setOutsideTouchable(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 设置背景,这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景</span> popWindow.setBackgroundDrawable(<span style="color: #0000ff;">new</span><span style="color: #000000;"> BitmapDrawable()); </span><span style="color: #008000;">//</span><span style="color: #008000;"> PopupWindow的显示及位置设置 </span><span style="color: #008000;">//</span><span style="color: #008000;"> popWindow.showAtLocation(parent, Gravity.FILL, 0, 0);</span> popWindow.showAsDropDown(parent, 0,0<span style="color: #000000;">); popWindow.setOnDismissListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> OnDismissListener() { @Override </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onDismiss() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 改变显示的按钮图片为正常状态</span>
changeButtonImage(); } });
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 监听触屏事件</span> popWindow.setTouchInterceptor(<span style="color: #0000ff;">new</span><span style="color: #000000;"> OnTouchListener() { </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> onTouch(View view, MotionEvent event) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 改变显示的按钮图片为正常状态</span>
changeButtonImage(); popWindow.dismiss(); return false; } }); } }
4.其他的请看源代码吧 o(∩_∩)o