解决方案 »
- Route类报空指针的问题
- android 如何录制并拼接MP3文件
- 关于广告提供商,除了有米,adTouch啥的,还有什么推荐
- 关于GridView Scroll时非正常切换Image的问题
- 手机待命后程序不再运行
- 网络专业准备自学android
- 调用android系统摄像头,指定路径
- 百度定位问题
- HttpsURLConnection,在使用中发现,如果网络连接不好或没有网络,那么软件就会异常退出,既不执行超时时间,也没办法捕获异常
- 用vlc播放rtsp视频,有时候黑屏,有时候连接正常,可能是什么原因?
- 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;
}
}解决了就好,祝好运!