popwindow的封装

来源:互联网 发布:hp打印机驱动for mac 编辑:程序博客网 时间:2024/06/15 17:46

popwindow使用中还是遇到几个问题,记录一下
1、popwindow弹出位置,还未解决弹出在控件上方的办法(目前高度写死)
2、popwindow弹出时背景变灰(类似dialog的效果)
3、popwindow与Listview使用时,item宽度自适应解决。
4、简单的对popwindow进行封装,打造易用的popwindow。
这里写图片描述这里写图片描述

1、PopList类

package com.example.pop;import android.app.Activity;import android.content.Context;import android.graphics.drawable.BitmapDrawable;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager;import android.widget.AdapterView;import android.widget.ListView;import android.widget.PopupWindow;import java.util.ArrayList;/** * Created by yuxiaogang on 2017/3/12. */public class PopList {    private Context context;    private PopupWindow popupWindow;    private ListView listview;    private PopAdapter popAdapter;    private ArrayList list;    private MyOnDismissListener listener;    public void setItemClick(MyItemClick itemClick) {        this.itemClick = itemClick;    }    private MyItemClick itemClick;    //设置pop消失的监听事件;    public void setListener(MyOnDismissListener listener) {        this.listener = listener;    }    public interface MyOnDismissListener {         void onClick();    }    //设置item的点击事件    public interface MyItemClick{        void onItemClick(String str);    }    public PopList(Context context, ArrayList list) {        this.context = context;        this.list = list;    }    public void showPop(Activity activity, View v) {        if (popupWindow != null) {            popupWindow.dismiss();        } else {            initPop(activity, v);        }    }    public boolean disMissPop() {        boolean isshowing = false;        if (null != popupWindow) {            isshowing = popupWindow.isShowing();            popupWindow.dismiss();        }        return isshowing;    }    private void initPop(final Activity activity, View v) {        View view = LayoutInflater.from(context).inflate(                R.layout.pop, null);        listview = (ListView) view.findViewById(R.id.listview);        popAdapter = new PopAdapter(v.getContext(), list);        listview.setAdapter(popAdapter);        popupWindow = new PopupWindow(view,                WindowManager.LayoutParams.WRAP_CONTENT,                WindowManager.LayoutParams.WRAP_CONTENT);        listview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);        view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);        popupWindow.setFocusable(true);        popupWindow.setOutsideTouchable(true);        popupWindow.setBackgroundDrawable(new BitmapDrawable());        popupWindow.showAsDropDown(v);        ScreenUtils.darkenBackgroud(activity, 0.6f);        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {            @Override            public void onDismiss() {                if (listener != null) {                    ScreenUtils.darkenBackgroud(activity, 1f);                    listener.onClick();                }            }        });        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                String str= (String) popAdapter.getItem(position);                itemClick.onItemClick(str);            }        });    }}

2、在Activity中使用

package com.example.pop;import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    private TextView text_select;    private Context context = MainActivity.this;    private PopupWindow window;    private ArrayList list;    private ListView listview;    private PopAdapter popAdapter;    private LinearLayout ll_select;    private ImageView iv_pull;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        text_select = (TextView) findViewById(R.id.text_select);        ll_select = (LinearLayout) findViewById(R.id.ll_select);        iv_pull = (ImageView) findViewById(R.id.iv_pull);        ll_select.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                iv_pull.setImageResource(R.mipmap.arrow_spinner_up);                initDate();                final PopList popList = new PopList(context, list);                popList.showPop(MainActivity.this, v);                popList.setListener(new PopList.MyOnDismissListener() {                    @Override                    public void onClick() {                        Log.i("----", "dimiss");                        iv_pull.setImageResource(R.mipmap.arrow_spinner_down);                    }                });                popList.setItemClick(new PopList.MyItemClick() {                    @Override                    public void onItemClick(String str) {                        text_select.setText(str);                        popList.disMissPop();                    }                });            }        });    }    private void initDate() {        list = new ArrayList();        list.add("111");        list.add("222");        list.add("3333333333333333");        list.add("444");        list.add("555");        list.add("555");    }}

代码下载地址
http://download.csdn.net/detail/androidxiaogang/9778734

1 0
原创粉丝点击