关于popwindow的简单实例

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功能很强大,的很多有趣的功能都可以使用它实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值