结合上篇android中使用ViewPager实现图片拖动,我们实现了点击“帮助”按钮的功能,这一篇则是接着上一篇,让我们一起来完成“我的”按钮的功能,这一功能,则是使用PopupWindow来实现弹出菜单。
老习惯,先上效果图:
图一
图二
再上项目结构图,如图:
从项目结构图可见,我们这里并没有新建新的Activity,因为“我的”按钮和“帮助”是在一个页面的,所以,我们只需新建一个效果图中的,弹出菜单的布局文件即可,即popup_menu.xml,代码如下:
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:orientation="vertical"
-
<spanstyle="background-color:#99cc00;">android:background="@drawable/popu_menu"</span>
-
android:paddingLeft="1dip"
-
android:paddingRight="1dip"
-
android:paddingTop="1dip"
-
android:paddingBottom="14dip">
-
<Button
-
android:id="@+id/btn_my_favorites"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:gravity="center"
-
android:text="我的喜爱"
-
android:layout_weight="1"
-
-
android:textSize="15sp"
-
android:textColor="@android:color/white"
-
<spanstyle="background-color:#99cc00;">android:background="@drawable/button4"</span>
-
android:textStyle="bold"/>
-
-
<View
-
android:layout_width="fill_parent"
-
android:layout_height="0.5dip"
-
android:background="#eee"/>
-
-
<Button
-
android:id="@+id/btn_my_correction"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:layout_weight="1"
-
<spanstyle="background-color:#99cc00;">android:background="@drawable/button4"</span>
-
android:gravity="center"
-
-
android:text="我的收藏"
-
android:textColor="@android:color/white"
-
android:textSize="15sp"
-
android:textStyle="bold"/>
-
-
<View
-
android:layout_width="fill_parent"
-
android:layout_height="0.5dip"
-
android:background="#eee"/>
-
<Button
-
android:id="@+id/btn_my_evaluation"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
<spanstyle="background-color:#99cc00;">android:background="@drawable/button4"</span>
-
android:gravity="center"
-
-
-
android:layout_weight="1"
-
android:text="我的评价"
-
android:textSize="15sp"
-
android:textColor="@android:color/white"
-
android:textStyle="bold"
-
android:focusable="true"/>
-
</LinearLayout>
上面标记为绿色的代码,即是我对弹出菜单的一些背景和按钮的修饰,否则原始的效果很难受。
@drawable/popu_menu,popu_menu是一张图片,也就是弹出菜单的一张棕色的背景图,这个我就不上传附件了,大家随意换一张就行。
@drawable/button4,button4则是一个修饰原生button的xml文件,放置在drawable-hdpi这个文件夹,跟图片一起,代码如下:(颜色大家就自己配置吧,也就是我这里的android:drawable="XXXX",我就偷下懒了....)
button4.xml:
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
-
-
<itemandroid:state_window_focused="false"android:drawable="@color/buttonBg"/>
-
-
<itemandroid:state_focused="true"android:state_pressed="true"
-
android:drawable="@color/main_color"/>
-
-
<itemandroid:state_focused="false"android:state_pressed="true"
-
android:drawable="@color/main2_color"/>
-
-
<itemandroid:state_focused="true"android:drawable="@color/main2_color"/>
-
</selector>
最后,图片和布局都准备好了之后,就是在MainActivity.java中去编写代码了,具体流程则是先找到这个按钮,然后绑定事件,最后运行就可以了。代码如下:
Mainactivity.java:
-
packagecom.test.citylist;
-
-
importandroid.app.Activity;
-
importandroid.app.AlertDialog;
-
importandroid.content.Context;
-
importandroid.content.DialogInterface;
-
importandroid.content.Intent;
-
importandroid.graphics.drawable.BitmapDrawable;
-
importandroid.net.Uri;
-
importandroid.os.Bundle;
-
importandroid.view.LayoutInflater;
-
importandroid.view.Menu;
-
importandroid.view.View;
-
importandroid.view.View.OnClickListener;
-
importandroid.widget.Button;
-
importandroid.widget.PopupWindow;
-
-
publicclassMainActivityextendsActivityimplementsOnClickListener{
-
-
privateButtonbtn_help,btn_menu;
-
privatePopupWindowpopupMenu;
-
-
publicvoidonCreate(BundlesavedInstanceState){
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
-
-
btn_help=(Button)findViewById(R.id.btn_help);
-
btn_menu=(Button)findViewById(R.id.btn_my_menu);
-
btn_help.setOnClickListener(this);
-
btn_menu.setOnClickListener(this);
-
}
-
@Override
-
publicbooleanonCreateOptionsMenu(Menumenu){
-
getMenuInflater().inflate(R.menu.activity_main,menu);
-
returntrue;
-
}
-
-
@Override
-
publicvoidonClick(Viewv){
-
-
switch(v.getId()){
-
caseR.id.btn_help:
-
Intentintent=newIntent();
-
intent.setClass(MainActivity.this,HelpActivity.class);
-
startActivity(intent);
-
break;
-
-
caseR.id.btn_my_menu:
-
initPopupMenu();
-
break;
-
default:
-
break;
-
}
-
}
-
-
-
-
privatevoidinitPopupMenu(){
-
if(popupMenu==null){
-
LayoutInflaterlay=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-
Viewv=lay.inflate(R.layout.popup_menu,null);
-
-
((Button)v.findViewById(R.id.btn_my_favorites)).setOnClickListener(newOnClickListener(){
-
@Override
-
publicvoidonClick(Viewview){
-
popupMenu.dismiss();
-
Intentintent=newIntent(MainActivity.this,MainActivity.class);
-
startActivity(intent);
-
}
-
});
-
-
((Button)v.findViewById(R.id.btn_my_correction)).setOnClickListener(newOnClickListener(){
-
@Override
-
publicvoidonClick(Viewview){
-
popupMenu.dismiss();
-
Intentintent=newIntent(MainActivity.this,MainActivity.class);
-
startActivity(intent);
-
}
-
});
-
-
((Button)v.findViewById(R.id.btn_my_evaluation)).setOnClickListener(newOnClickListener(){
-
@Override
-
publicvoidonClick(Viewview){
-
popupMenu.dismiss();
-
Intentintent=newIntent(MainActivity.this,MainActivity.class);
-
startActivity(intent);
-
}
-
});
-
-
popupMenu=newPopupWindow(v,getApplicationContext().getResources().getDisplayMetrics().widthPixels/3,
-
getApplicationContext().getResources().getDisplayMetrics().heightPixels/4,true);
-
}
-
-
popupMenu.setBackgroundDrawable(newBitmapDrawable());
-
-
-
-
popupMenu.setFocusable(true);
-
popupMenu.setOutsideTouchable(true);
-
popupMenu.update();
-
-
popupMenu.showAsDropDown(btn_menu);
-
}
-
}
到这里,运行代码,就可以看到效果图所示效果了,说做事要有始有终,既然我的这个页面上的两个按钮的功能已经分别实现了,那么最后一个“分享”按钮,我也不愿把它落下,那么点击“分享”后,是什么效果,用什么实现,请大家关注我的下一篇文章。
分享到:
相关推荐
大家可自行学习,研究,并补充该demo.
点击从底部弹出菜单,覆盖在当前Activity上面,背景灰色透明
这里使用activity实现弹出滑动窗口或菜单,主要是使用了一些设置activity的样式来实现弹出窗口和滑动效果,实现如下: 第一步:设计要弹出窗口的xml布局: <?xml version=1.0 encoding=utf-8?> <...
目前只见过两种弹出框的实现方式,第一种是最常见的PopupWindow,第二种也就是Activity的方式是前几天才见识过。感觉很霸气哦。没想到,activity也可以做伪窗口。 先贴上最常见的方法,主要讲activity的方法。 一、...
PopupWindow是一个弹出式窗口,它可以展示任意View。他会浮在当前窗口的上方展示。 下面看代码: 代码如下:public class MyActivity extends Activity{ private PopupWindow menu; private LayoutInflater ...
不知道微信是用什么实现的,我使用popupwindow来实现,主要分为几块内容: 1、窗口布局文件:popwin_share.xml <?xml version=1.0 encoding=utf-8?> <LinearLayout xmlns:android=...
先上Android仿微博菜单弹出效果图,这个截图不是很流畅,大家可以下载apk试一下。 说一下实现思路: 1、截取当前窗口,对图片做高斯模糊处理,将处理后的图片做popupwindow的背景图片; 2、创建popupwindow,...
百度地图点击标注,弹出窗口.rar 百度地图移动获取位置,自动定位.zip 百度快速定位locSDK_3.3_Demo.zip 监控别人的行踪.rar 级联菜单,两级菜单自定义实现提供多种方式PopWindow,Fragment引用..rar 自动判断位置的...
*“弹出自定义”由unparallellogical *“PopupwindowDemo”由MichaelYe *“NewQuickAction”由Lorensius W·L中。T *“Android的自定义选项卡”由劳伦斯·德Oliveiro *“爵士ViewPager”由杰里米·范斯坦 *“的Andr...