popwindow,就是一个弹出窗口,可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画.
两个xml布局,一个是主布局,一个是弹窗布局!!!主xml布局随便写,只是一个相应时间的启动而已,笔者只写了一个TextView!弹窗布局写了三个Button,用来显示弹窗!
详细就不写出来了
写一个类继承popwindow类,然后在构造函数中,实现有关功能!
package com.example.androidpopwindow;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;
public class MyPopWindows extends PopupWindow {
private View menuView;
private Button btn1,btn2,btn3;
public MyPopWindows(Activity context,OnClickListener listener) {
super(context);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
menuView=inflater.inflate(R.layout.popbutton, null);
btn1=(Button)menuView.findViewById(R.id.button1);
btn2=(Button)menuView.findViewById(R.id.button2);
btn3=(Button)menuView.findViewById(R.id.button3);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dismiss();
}
});
btn1.setOnClickListener(listener);
btn2.setOnClickListener(listener);
this.setContentView(menuView);
this.setWidth(LayoutParams.FILL_PARENT);
this.setHeight(LayoutParams.WRAP_CONTENT);
this.setFocusable(true);
this.setAnimationStyle(android.R.anim.slide_in_left);
ColorDrawable dw = new ColorDrawable(0xb0000000);
this.setBackgroundDrawable(dw);
menuView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
int height = menuView.findViewById(R.id.layout).getTop();
int y=(int) event.getY();
if(event.getAction()==MotionEvent.ACTION_UP){
if(y<height){
dismiss();
}
}
return true;
}
});
}
}
在主类调用自己写的popwindow类,并设置有关的监听函数!完成。。。
package com.example.androidpopwindow;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView text_check;
private MyPopWindows popwindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_check = (TextView) this.findViewById(R.id.text_check);
text_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
popwindow = new MyPopWindows(MainActivity.this, ls);
popwindow.showAtLocation(text_check, Gravity.LEFT, 0, 0);
}
});
}
private OnClickListener ls = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
popwindow.dismiss();
switch (v.getId()) {
case R.id.button1:
System.out.println("1");
break;
case R.id.button2:
System.out.println("2");
break;
case R.id.button3:
System.out.println("3");
break;
}
}
};
}
这就是一个简单的popwindow实例,其实popwindow功能很强大,的很多有趣的功能都可以使用它实现