android 模仿uc标签页,仿uc浏览器菜单实现【原创】

UC浏览器的菜单我们可以发现,UC的菜单就是一个个标签页显示在了PopupWindow上,所以可以想到使用PopupWindow+TabHost来实现类似的效果。首先要重写PopupWindow

public class MyMenu extends PopupWindow {

private TabHost tabHost; //标签页窗口

private LayoutInflater inflater; //用于加载tabhost

private View layout;

private Context context;

//构造函数

public MyMenu(Context context, int width, int height) {

super(context);

this.context = context;

inflater = LayoutInflater.from(this.context);

//创建标签页

initTab();

//设置默认选项

setWidth(width); //宽

setHeight(height); //高

setContentView(tabHost); //把标签页设置到PopupWindow上

}

//实例化标签页

private void initTab(){

layout = inflater.inflate(R.layout.menu,null);

tabHost = (TabHost)layout. findViewById(android.R.id.tabhost); //获取tabhost

tabHost.setBackgroundColor(Color.argb(60,144,144,150)); //设置背景色

tabHost.setup(); //使用findViewById()加载tabhost时在调用addTab前必须调用

/**

* addTab()添加标签页

* tabHost.newTabSpec("Fitst") 创建一个tab

* setIndicator("A") 设置指针

* setContent(R.id.tab1)设置内容

*/

tabHost.addTab(tabHost.newTabSpec("Fitst").setIndicator("A").setContent(R.id.tab1));

tabHost.addTab(tabHost.newTabSpec("SECOND").setIndicator("B").setContent(R.id.tab2));

tabHost.addTab(tabHost.newTabSpec("THIRD").setIndicator("C").setContent(R.id.tab3));

tabHost.setCurrentTab(1); //设置默认选种标签

}

//获取选项卡中的组件

public View getOption(int id){

return layout.findViewById(id);

}

}

下面是布局文件:

android:id="@android:id/tabhost"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:orientation="vertical"

android:layout_height="fill_parent"

android:layout_width="fill_parent">

android:id="@android:id/tabs"

android:layout_height="40dp"

android:layout_width="fill_parent"

/>

android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:id="@+id/tab1">

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:text="Tab one"

android:id="@+id/first_button"

/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:id="@+id/tab2">

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:text="Tab two"

/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:id="@+id/tab3">

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:text="Tab three"目前菜单的样子还是比较丑陋了,美化大家自己发挥好了!/>

主要的Activity的代码如下:

public class MyActivity extends Activity

{

private MyMenu menu;

private LinearLayout linear;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

init();

}

//组件初始化

private void init(){

linear = (LinearLayout) findViewById(R.id.popMenu);

int width = getWindowManager().getDefaultDisplay().getWidth()-15; //菜单的宽度

int heigth = getWindowManager().getDefaultDisplay().getHeight()/3; //菜单的高度

menu = new MyMenu(this, width,heigth);

Button button= (Button) menu.getOption(R.id.first_button); //获取菜单第一个标签页中的按钮

//添加点击事件

button.setOnClickListener(new Button.OnClickListener(){

public void onClick(View v) {

Toast.makeText(MyActivity.this,"tab one",Toast.LENGTH_SHORT).show();

}

});

}

//显示菜单

private void show(){

menu.showAtLocation(linear, Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

//按以下菜单按键展示菜单 按两下隐藏菜单

if(!menu.isShowing()&&keyCode == KeyEvent.KEYCODE_MENU){

show();

}

else{

menu.dismiss();

}

return true;

}

}

运行,看一下效果即可,对于菜单布局,可以自定义,不同的布局,实现不同的菜单。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/12463.html

75d087ef9a9fb11dc373caaf33adbf7f.png

微信打赏

支付宝打赏

感谢您对作者Snow的打赏,我们会更加努力!    如果您想成为作者,请点我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值