广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android仿QQ空间底部菜单示例代码

    2018-04-08 09:03:36 次阅读 稿源:互联网
    广告
    之前曾经在网上看到Android仿QQ空间底部菜单的Demo,发现这个Demo有很多Bug,布局用了很多神秘数字。于是研究了一下QQ空间底部菜单的实现,自己写了一个,供大家参考。效果如下图所示:
     
    1、实现原理很简单,底部菜单是一个水平分布的LinearLayout,里面又是五个LinearLayout,它们的layout_weight都为1,意味着底部菜单的子控件将屏幕宽度平均分为5部分。五个LinearLayout除了中间那个,其余都在里面放置ImageView和TextView(中间先空着,什么都不放,后面用来放底盘和加号的)。
    2、中间的加号和底盘是用FramLayout实现的,现在底部居中的位置放置底盘,然后在相同位置放置加号,就搞定了。
    3、设置加号的触摸事件,弹窗是用PopupWindow实现的,然后再把加号的图片替换成乘号就搞定了。代码如下所示:
    ButtomMenuActivity.java:
    代码如下:

    package com.shamoo.qqbuttommenu;
    import com.shamoo.qqbuttommenu.R;
    import android.app.TabActivity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Color;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnTouchListener;
    import android.view.WindowManager;
    import android.widget.AbsListView;
    import android.widget.FrameLayout;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.PopupWindow;
    import android.widget.PopupWindow.OnDismissListener;
    import android.widget.RadioButton;
    import android.widget.TabHost;
    public class ButtomMenuActivity extends TabActivity {
    FrameLayout fmpan;
    TabHost tabHost;
    ImageView image;
    FrameLayout fm;
    LayoutInflater inflater;
    private RadioButton tab_home, tab_second;
    PopupWindow popup;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab);
    initView();
    fm.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    image.setImageResource(R.drawable.toolbar_plusback);
    showWindow(fmpan);
    }
    });
    }
    private void initView() {
    inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    fmpan = (FrameLayout)findViewById(R.id.tab1);
    fm = (FrameLayout)findViewById(R.id.btn_ck);
    image = (ImageView)findViewById(R.id.image1);
    }

    private void showWindow(View parent) {
    if(popup == null) {
    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = layoutInflater.inflate(R.layout.write_tab, null);
    // 创建一个PopuWidow对象
    popup = new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT,320);
    // 设置焦点在弹窗上
    popup.setFocusable(true);
    // 设置允许在外点击消失
    popup.setOutsideTouchable(true);
    // 设置弹窗消失事件监听
    popup.setOnDismissListener(new OnDismissListener() {
    public void onDismiss() {
    // TODO Auto-generated method stub
    image.setImageResource(R.drawable.toolbar_plus);
    }
    });
    // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
    popup.setBackgroundDrawable(new BitmapDrawable());
    popup.setTouchInterceptor(new OnTouchListener() {
    public boolean onTouch(View view, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_OUTSIDE) {
    popup.dismiss();
    image.setImageResource(R.drawable.toolbar_plus);
    return true;
    }
    return false;
    }
    });
    }
    if(!popup.isShowing()) {
    popup.showAsDropDown(parent, Gravity.CENTER, 0);
    }
    }
    }

    tab.xml:
    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <FrameLayout
    android:id="@+id/l1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
    <TabWidget
    android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:layout_height="10.0px"
    android:visibility="gone" />
    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <include
    android:layout_alignParentBottom="true"
    android:id="@+id/tab1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    layout = "@layout/test" />
    </RelativeLayout>
    </FrameLayout>
    </TabHost>

    test.xml:
    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/toolbar_bg" >
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1" >
    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:src="@drawable/tab_timefeed_opacity"
    android:visibility="visible" />
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center"
    android:text="好友动态"
    android:textSize="10.0dip"
    android:visibility="visible" />
    </LinearLayout>
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1" >
    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:src="@drawable/tab_feedback_opacity"
    android:visibility="visible" />
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center"
    android:text="与我相关"
    android:textSize="10.0dip"
    android:visibility="visible" />
    </LinearLayout>
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1" />
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1" >
    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:src="@drawable/tab_myzone_opacity"
    android:visibility="visible" />
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center"
    android:text="主页"
    android:textSize="10.0dip"
    android:visibility="visible" />
    </LinearLayout>
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1" >
    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:src="@drawable/tab_applist_opacity"
    android:visibility="visible" />
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center"
    android:text="应用"
    android:textSize="10.0dip"
    android:visibility="visible" />
    </LinearLayout>
    </LinearLayout>
    <FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_weight="1" >
    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/toolbar_write_bg" />
    </FrameLayout>
    <FrameLayout
    android:id="@+id/btn_ck"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1" >
    <ImageView
    android:id="@+id/image1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="2.0dip"
    android:src="@drawable/toolbar_plus" />
    </FrameLayout>
    </FrameLayout>

    这个Demo只是仿着来玩,可能有些地方写得不怎么规范。如果有什么问题,希望大家可以指出,谢谢!

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告