All Projects → YeXiaoChao → Yc_ui_fragment_qzone

YeXiaoChao / Yc_ui_fragment_qzone

Licence: other
Fragment+PopupWindow仿QQ空间最新版底部菜单栏

Programming Languages

java
68154 projects - #9 most used programming language

直接看栗子吧,效果基本实现,界面微调和弹窗的优化,去做的话会很耗时说,暂时就酱紫了。上传效果动态图太大了,直接手机截图的效果图如下:

 

至于代码的实现主要就是自定义的菜单栏,和用 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;">&lt;</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;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>

<span style="color: #0000ff;">&lt;</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;">&gt;</span>

    <span style="color: #0000ff;">&lt;</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;">&gt;</span>

        <span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 动态 </span><span style="color: #008000;">--&gt;</span>

        <span style="color: #0000ff;">&lt;</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;">&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>
        <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>

        <span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 与我相关 </span><span style="color: #008000;">--&gt;</span>

        <span style="color: #0000ff;">&lt;</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;">&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>
        <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>

        <span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 留白 </span><span style="color: #008000;">--&gt;</span>

        <span style="color: #0000ff;">&lt;</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;">&gt;</span>
        <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>

        <span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 我的空间 </span><span style="color: #008000;">--&gt;</span>

        <span style="color: #0000ff;">&lt;</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;">&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>
        <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>

        <span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 玩吧 </span><span style="color: #008000;">--&gt;</span>

        <span style="color: #0000ff;">&lt;</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;">&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>

            <span style="color: #0000ff;">&lt;</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;">/&gt;</span>
        <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>
    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">LinearLayout</span><span style="color: #0000ff;">&gt;</span>

    <span style="color: #0000ff;">&lt;</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;">&gt;</span>
    <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">LinearLayout</span><span style="color: #0000ff;">&gt;</span>
<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FrameLayout</span><span style="color: #0000ff;">&gt;</span>

<span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 中间按钮背景 </span><span style="color: #008000;">--&gt;</span>

<span style="color: #0000ff;">&lt;</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;">/&gt;</span>

<span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> 中间按钮 </span><span style="color: #008000;">--&gt;</span>

<span style="color: #0000ff;">&lt;</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;">/&gt;</span>

</RelativeLayout>

activity_main.xml

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;"> 初始化默认为选中点击了&ldquo;动态&rdquo;按钮</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;">
 * 点击了&ldquo;动态&rdquo;按钮
 </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;">
 * 点击了&ldquo;与我相关&rdquo;按钮
 </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;">
 * 点击了&ldquo;我的空间&rdquo;按钮
 </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;">
 * 点击了&ldquo;更多&rdquo;按钮
 </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;"> 设置背景,这个是为了点击&ldquo;返回Back&rdquo;也能使其消失,并且并不会影响你的背景</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; } }); } }

MainActivity

4.其他的请看源代码吧 o(∩_∩)o

 

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].