实现Android的底部滑动选择

来源:互联网 发布:江苏天马网络科技集团 编辑:程序博客网 时间:2024/06/05 17:52

最近写了一个小demo测试一下底部滑动选择的效果,在这里想把它记录下来

首先还是看效果图:
这里写图片描述
接下就是代码部分了
MainActivity:

public class MainActivity extends AppCompatActivity {    private ConstellationWheelAdapter adapter;    private ArrayList<String> list;    private SelectPopupWindow pop;    private TextView mResult;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        list = new ArrayList<>();        list.add("白羊座");        list.add("金牛座");        list.add("双子座");        list.add("巨蟹座");        list.add("狮子座");        list.add("处女座");        list.add("天秤座");        list.add("天蝎座");        list.add("射手座");        list.add("摩羯座");        list.add("水瓶座");        list.add("双鱼座");        mResult = (TextView) findViewById(R.id.tv_result);        mResult.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                adapter = new ConstellationWheelAdapter(list);                pop = new SelectPopupWindow(MainActivity.this, "请选择星座", adapter, resultClick);                // 显示窗口                pop.showAtLocation(getWindow().getDecorView(),                        Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);            }        });    }    private View.OnClickListener resultClick = new View.OnClickListener() {        @Override        public void onClick(View v) {            String s = list.get(pop.getWheelView().getCurrentItem());            mResult.setText(s);            pop.dismiss();        }    };}

自定义的popupwindow

public class SelectPopupWindow extends PopupWindow {    private ImageView btn_ok, btn_cancel;    private TextView titleTv;    private WheelView wheelView;    private View mMenuView;    public SelectPopupWindow(Activity context, String title, WheelAdapter adapter, OnClickListener itemsOnClick) {        super(context);        LayoutInflater inflater = (LayoutInflater) context                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);        mMenuView = inflater.inflate(R.layout.select_popup, null);        btn_ok = (ImageView) mMenuView.findViewById(R.id.btn_ok);        btn_cancel = (ImageView) mMenuView.findViewById(R.id.btn_cancel);        titleTv=(TextView) mMenuView.findViewById(R.id.title);        wheelView=(WheelView)mMenuView.findViewById(R.id.wheel);        wheelView.setAdapter(adapter);        titleTv.setText(title);        // 设置按钮监听        btn_ok.setOnClickListener(itemsOnClick);        btn_cancel.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                dismiss();            }        });        // 设置SelectPicPopupWindow的View        this.setContentView(mMenuView);        // 设置SelectPicPopupWindow弹出窗体的宽        this.setWidth(LayoutParams.MATCH_PARENT);        // 设置SelectPicPopupWindow弹出窗体的高        this.setHeight(LayoutParams.WRAP_CONTENT);        // 设置SelectPicPopupWindow弹出窗体可点击        this.setFocusable(true);        // 设置SelectPicPopupWindow弹出窗体动画效果         this.setAnimationStyle(R.style.AnimationFade);        // 实例化一个ColorDrawable颜色为半透明        ColorDrawable dw = new ColorDrawable(00000000);        // 设置SelectPicPopupWindow弹出窗体的背景        this.setBackgroundDrawable(dw);        // mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框        mMenuView.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                int height = mMenuView.findViewById(R.id.pop_operate).getTop();                int y = (int) event.getY();                if (event.getAction() == MotionEvent.ACTION_UP) {                    if (y < height) {                        dismiss();                    }                }                return true;            }        });    }    public WheelView getWheelView() {        return wheelView;    }}

上面只给出了部分代码。ConstellationWheelAdapter以及其他的代码和图片等资源
我下面会给出整个Module的链接。需要的话可以直接下过来复制用。

可能自身博客写的少,自己总结好像也没到位。希望自己以后的博客能越写越好,多去学习学习别人的优秀博客。然后能和大家一起分享。共同学习进步。

下载链接:http://download.csdn.net/detail/qq_33043795/9698774

0 0
原创粉丝点击