亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android仿QQ空間底部菜單示例代碼

2020-04-11 12:08:47
字體:
來源:轉載
供稿:網友
之前曾經在網上看到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只是仿著來玩,可能有些地方寫得不怎么規范。如果有什么問題,希望大家可以指出,謝謝!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品一区二555| 欧美一级视频一区二区| 欧美日韩国产中文字幕| 精品国内产的精品视频在线观看| 91爱爱小视频k| 欧美成人中文字幕在线| 国产亚洲成精品久久| 国产综合色香蕉精品| 51午夜精品视频| 日韩欧美大尺度| 日韩在线观看视频免费| 91日本视频在线| 日韩美女免费视频| 高清视频欧美一级| 成人免费午夜电影| 欧美激情综合色综合啪啪五月| 欧美激情视频一区| 91精品国产777在线观看| 97成人超碰免| 在线国产精品播放| 成人网页在线免费观看| 91福利视频网| 亚洲女人被黑人巨大进入al| 欧洲成人午夜免费大片| 亚洲男人天天操| 中国日韩欧美久久久久久久久| 国产一区二区三区视频在线观看| 日韩av免费网站| 97视频免费看| 久久久久久18| 久久久精品国产网站| 欧美极品xxxx| 亚洲国产欧美在线成人app| 亚洲精品ady| 欧美激情精品久久久| 国产日韩换脸av一区在线观看| 欧美人在线视频| 91视频免费在线| 国产精品黄视频| 91精品久久久久久久| 日韩在线视频线视频免费网站| 欧美激情第1页| 中文字幕在线视频日韩| 日韩中文字在线| 日韩电影中文 亚洲精品乱码| 91综合免费在线| 国产精品视频免费观看www| 成人日韩在线电影| 欧美日韩性视频| 亚洲一区中文字幕| 在线免费观看羞羞视频一区二区| 欧美黑人狂野猛交老妇| 欧美做受高潮1| 日韩电影大片中文字幕| 欧美美女18p| 国产精品高潮呻吟久久av野狼| 97精品国产91久久久久久| 中文国产成人精品| 欧美一区视频在线| 欧美激情2020午夜免费观看| 国产偷亚洲偷欧美偷精品| 国产一区二区三区视频在线观看| 午夜精品蜜臀一区二区三区免费| 亚洲欧美色图片| 欧美成人免费小视频| 国产精品成人久久久久| www国产精品com| 亚洲综合成人婷婷小说| 日韩精品视频免费专区在线播放| 亚洲小视频在线观看| 亚洲欧美国产制服动漫| 欧美一区二区三区精品电影| 久久激情五月丁香伊人| 久久久国产成人精品| 亚洲成av人影院在线观看| 日韩欧美视频一区二区三区| 这里只有精品视频在线| 国产视频精品在线| 国产一区二区欧美日韩| **欧美日韩vr在线| 国产免费一区视频观看免费| 美女精品久久久| 91天堂在线观看| 亚洲精品欧美一区二区三区| 国产精品自拍小视频| 国产欧美日韩91| 日本一欧美一欧美一亚洲视频| 久久久久久久国产| 九九久久久久99精品| 国产女人精品视频| 欧美激情精品久久久| 国产精品网站视频| 久久久精品日本| 亚洲欧洲高清在线| 日韩美女写真福利在线观看| 亚洲一区av在线播放| 69**夜色精品国产69乱| 国产精品99久久久久久www| 欧美性xxxxhd| 成人精品aaaa网站| 亚洲美女av电影| 欧美黄色片免费观看| 久久久久免费视频| 亚洲美女www午夜| 国产v综合ⅴ日韩v欧美大片| 久久777国产线看观看精品| 91久久精品日日躁夜夜躁国产| 亚洲大尺度美女在线| 国产日韩av在线播放| 亚洲第一区中文字幕| 欧美精品一本久久男人的天堂| 国产成人精品av| 2019日本中文字幕| 最近2019中文字幕一页二页| 国产在线a不卡| 欧美日韩亚洲网| 一道本无吗dⅴd在线播放一区| 亚洲一区二区自拍| 操人视频在线观看欧美| 久久综合免费视频| 国产午夜精品全部视频在线播放| 国产精品视频一区二区高潮| 国产亚洲a∨片在线观看| 97久久精品人人澡人人爽缅北| 日本高清视频一区| 国产精品国产三级国产aⅴ浪潮| 久久精品国产综合| 国产精品一区二区三区久久久| 欧美xxxx做受欧美.88| 国产精品久久精品| 亚洲自拍偷拍一区| 国产精品久久91| 国内自拍欧美激情| 久久精品一区中文字幕| 欧美日韩精品在线观看| 91免费欧美精品| www国产精品视频| 欧洲永久精品大片ww免费漫画| 国产亚洲精品综合一区91| 日韩中文字幕在线| 日韩成人av在线播放| 久久精品国产69国产精品亚洲| 久久久伊人日本| 久久精品久久久久久国产 免费| 国产精品一区二区三区在线播放| 久久精品国产亚洲精品| 成人欧美在线观看| 亚洲一区二区久久久| 精品欧美国产一区二区三区| 91色p视频在线| 激情亚洲一区二区三区四区| 久久久久中文字幕2018| 欧美亚洲国产日本| 亚洲xxxxx电影| 国内精品小视频| 欧美日韩一区二区在线播放| 日韩av在线免费观看一区| 日韩欧美一区视频| 中文字幕日韩精品有码视频| 国产成+人+综合+亚洲欧洲| 亚洲综合中文字幕在线| 欧美午夜女人视频在线| 欧美成人精品h版在线观看| 午夜精品福利电影|