解决方案 »
- 关于Lisiview的小问题~~
- 点击ImageView显示大图,在大图上点击一下,就关闭大图
- android 自定义menu 怎么修改高度
- 启动一个新的activity的时候怎么把当前task之前的activity都干掉?
- android activity 支持onTouch
- 初学,求资料~
- 安卓webview加载的网页如何放大
- 怎样让一个imagebutton叠加显示在ScrollView之上?
- android模拟器无法开机
- Android 怎么实现淘宝首页的滑动效果,Scrollview 嵌套滑动
- jquery mobile 与.net
- android MapView 转成 Bitmap
private void showPopupWindow() {
View view = (LinearLayout)getLayoutInflater()
.inflate(R.layout.activity_menu_prop, null);
LinearLayout scanmusic = (LinearLayout)view
.findViewById(R.id.menu_scanmusic);
LinearLayout equalizer = (LinearLayout)view
.findViewById(R.id.menu_equalizer);
LinearLayout sleep = (LinearLayout)view
.findViewById(R.id.menu_sleep);
LinearLayout preferences = (LinearLayout)view
.findViewById(R.id.menu_preferences);
LinearLayout exit = (LinearLayout)view
.findViewById(R.id.menu_exit);
LinearLayout menu_null = (LinearLayout)view
.findViewById(R.id.menu_null);
//设置选项size
int newW = dm_width-Utils.dip2px(this, 0.5f);
LinearLayout.LayoutParams param =
new LinearLayout.LayoutParams(newW/3, (newW/3)/3*2);
scanmusic.setLayoutParams(param);
equalizer.setLayoutParams(param);
sleep.setLayoutParams(param);
preferences.setLayoutParams(param);
exit.setLayoutParams(param);
menu_null.setLayoutParams(param);
scanmusic.setOnClickListener(new myOnClickListener());
equalizer.setOnClickListener(new myOnClickListener());
sleep.setOnClickListener(new myOnClickListener());
preferences.setOnClickListener(new myOnClickListener());
exit.setOnClickListener(new myOnClickListener());
popupWindow = new PopupWindow(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true); //设置PopupWindow可获得焦点
popupWindow.setTouchable(true); //设置PopupWindow可触摸
popupWindow.setOutsideTouchable(false); //设置非PopupWindow区域是否可触摸
popupWindow.setContentView(view);
backgroundAlpha(0.5f);
//添加pop窗口关闭事件
popupWindow.setOnDismissListener(new poponDismissListener());
popupWindow.setAnimationStyle(R.style.popuStyle); //设置 popupWindow动画样式
popupWindow.showAtLocation(findViewById(R.id.main_layout), Gravity.BOTTOM, 0, 0);
}
if(popupWindow!=null&& popupWindow.isShow()){
popupWindow.dissmiss();
}
View view = (LinearLayout)getLayoutInflater().inflate(R.layout.activity_menu_prop, null);在这个xml布局里最外层(我这里是LinearLayout)加上如下代码://下面部分代码主要用于响应按键事件(menu、back)
LinearLayout layout = (LinearLayout)view.findViewById(R.id.menu_layout);
layout.setFocusableInTouchMode(true);//能够获得焦点
layout.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_BACK:
closePopupWindow();
break;
case KeyEvent.KEYCODE_MENU:
closePopupWindow();
break;
}
}
return true;
}
});就OK了!非常完美!
完整代码如下: /**menu菜单选项*/
private void showPopupWindow() {
View view = (LinearLayout)getLayoutInflater()
.inflate(R.layout.activity_menu_prop, null);
LinearLayout scanmusic = (LinearLayout)view
.findViewById(R.id.menu_scanmusic);
LinearLayout equalizer = (LinearLayout)view
.findViewById(R.id.menu_equalizer);
LinearLayout sleep = (LinearLayout)view
.findViewById(R.id.menu_sleep);
LinearLayout preferences = (LinearLayout)view
.findViewById(R.id.menu_preferences);
LinearLayout exit = (LinearLayout)view
.findViewById(R.id.menu_exit);
LinearLayout menu_null = (LinearLayout)view
.findViewById(R.id.menu_null);
//设置选项size
int newW = dm_width-Utils.dip2px(this, 0.5f);
LinearLayout.LayoutParams param =
new LinearLayout.LayoutParams(newW/3, (newW/3)/3*2);
scanmusic.setLayoutParams(param);
equalizer.setLayoutParams(param);
sleep.setLayoutParams(param);
preferences.setLayoutParams(param);
exit.setLayoutParams(param);
menu_null.setLayoutParams(param);
scanmusic.setOnClickListener(new myOnClickListener());
equalizer.setOnClickListener(new myOnClickListener());
sleep.setOnClickListener(new myOnClickListener());
preferences.setOnClickListener(new myOnClickListener());
exit.setOnClickListener(new myOnClickListener());
popupWindow = new PopupWindow(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setContentView(view);
popupWindow.setFocusable(true); //设置PopupWindow可获得焦点(设置setFocusable属性,会无法响应按键事件,因此在下面加上setOnKeyListener)
popupWindow.setTouchable(true); //设置PopupWindow可触摸
popupWindow.setOutsideTouchable(false); //设置非PopupWindow区域是否可触摸
backgroundAlpha(0.4f);
//添加pop窗口关闭事件
popupWindow.setOnDismissListener(new poponDismissListener());
popupWindow.setAnimationStyle(R.style.popuStyle); //设置 popupWindow动画样式
popupWindow.showAtLocation(findViewById(R.id.main_layout), Gravity.BOTTOM, 0, 0);
//下面部分代码主要用于响应按键事件(menu、back)
LinearLayout layout = (LinearLayout)view.findViewById(R.id.menu_layout);
layout.setFocusableInTouchMode(true);//能够获得焦点
layout.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_BACK:
closePopupWindow();
break;
case KeyEvent.KEYCODE_MENU:
closePopupWindow();
break;
}
}
return true;
}
});
} /**关闭popupWindow*/
private void closePopupWindow(){
if (popupWindow!=null) {
popupWindow.dismiss();
popupWindow=null;
}
}
View view = (LinearLayout)getLayoutInflater().inflate(R.layout.activity_menu_prop, null);在这个xml布局里最外层(我这里是LinearLayout)加上如下代码://下面部分代码主要用于响应按键事件(menu、back)
LinearLayout layout = (LinearLayout)view.findViewById(R.id.menu_layout);
layout.setFocusableInTouchMode(true);//能够获得焦点
layout.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_BACK:
closePopupWindow();
break;
case KeyEvent.KEYCODE_MENU:
closePopupWindow();
break;
}
}
return true;
}
});就OK了!非常完美!
完整代码如下: /**menu菜单选项*/
private void showPopupWindow() {
View view = (LinearLayout)getLayoutInflater()
.inflate(R.layout.activity_menu_prop, null);
LinearLayout scanmusic = (LinearLayout)view
.findViewById(R.id.menu_scanmusic);
LinearLayout equalizer = (LinearLayout)view
.findViewById(R.id.menu_equalizer);
LinearLayout sleep = (LinearLayout)view
.findViewById(R.id.menu_sleep);
LinearLayout preferences = (LinearLayout)view
.findViewById(R.id.menu_preferences);
LinearLayout exit = (LinearLayout)view
.findViewById(R.id.menu_exit);
LinearLayout menu_null = (LinearLayout)view
.findViewById(R.id.menu_null);
//设置选项size
int newW = dm_width-Utils.dip2px(this, 0.5f);
LinearLayout.LayoutParams param =
new LinearLayout.LayoutParams(newW/3, (newW/3)/3*2);
scanmusic.setLayoutParams(param);
equalizer.setLayoutParams(param);
sleep.setLayoutParams(param);
preferences.setLayoutParams(param);
exit.setLayoutParams(param);
menu_null.setLayoutParams(param);
scanmusic.setOnClickListener(new myOnClickListener());
equalizer.setOnClickListener(new myOnClickListener());
sleep.setOnClickListener(new myOnClickListener());
preferences.setOnClickListener(new myOnClickListener());
exit.setOnClickListener(new myOnClickListener());
popupWindow = new PopupWindow(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setContentView(view);
popupWindow.setFocusable(true); //设置PopupWindow可获得焦点(设置setFocusable属性,会无法响应按键事件,因此在下面加上setOnKeyListener)
popupWindow.setTouchable(true); //设置PopupWindow可触摸
popupWindow.setOutsideTouchable(false); //设置非PopupWindow区域是否可触摸
backgroundAlpha(0.4f);
//添加pop窗口关闭事件
popupWindow.setOnDismissListener(new poponDismissListener());
popupWindow.setAnimationStyle(R.style.popuStyle); //设置 popupWindow动画样式
popupWindow.showAtLocation(findViewById(R.id.main_layout), Gravity.BOTTOM, 0, 0);
//下面部分代码主要用于响应按键事件(menu、back)
LinearLayout layout = (LinearLayout)view.findViewById(R.id.menu_layout);
layout.setFocusableInTouchMode(true);//能够获得焦点
layout.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_BACK:
closePopupWindow();
break;
case KeyEvent.KEYCODE_MENU:
closePopupWindow();
break;
}
}
return true;
}
});
} /**关闭popupWindow*/
private void closePopupWindow(){
if (popupWindow!=null) {
popupWindow.dismiss();
popupWindow=null;
}
}解决了就好,祝好运!