android开发分享Android PickerScrollView滑动选择控件使用方法详解

您所在的位置:网站首页 android滑动选择 android开发分享Android PickerScrollView滑动选择控件使用方法详解

android开发分享Android PickerScrollView滑动选择控件使用方法详解

2022-06-04 03:15| 来源: 网络整理| 查看: 265

android开发分享Android PickerScrollView滑动选择控件使用方法详解 34189784 • 2022年4月20日 下午6:52 • andiord开发 • 阅读 9

本文实例为大家分享了android pickerscrollview滑动选择控件的具体使用代码,供大家参考,具体内容如下先看一下效果图1.selectbean模拟假数据public class sel

android开发分享Android PickerScrollView滑动选择控件使用方法详解实例为大家分享了android pickerscrollview滑动选择控件的具体使用代码,供大家参考,具体内容如下

上述就是android开发分享Android PickerScrollView滑动选择控件使用方法详解的全部内容,如果对大家有所用处且需要了解更多关于Android学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

先看一下效果图

Android PickerScrollView滑动选择控件使用方法详解

1.selectbean模拟假数据

public class selectbean {       /**      * ret : 0      * msg : succes      * datas : [{"id":"0","categoryname":"本人","state":"1"},{"id":"1","categoryname":"父亲","state":"1"},{"id":"2","categoryname":"母亲","state":"1"},{"id":"3","categoryname":"配偶","state":"1"},{"id":"4","categoryname":"孩子","state":"1"},{"id":"5","categoryname":"其他","state":"1"}]      */       private int ret;     private string msg;     private list datas;       public int getret() {         return ret;     }       public void setret(int ret) {         this.ret = ret;     }       public string getmsg() {         return msg;     }       public void setmsg(string msg) {         this.msg = msg;     }       public list getdatas() {         return datas;     }       public void setdatas(list datas) {         this.datas = datas;     }       public static class datasbean {         /**          * id : 0          * categoryname : 本人          * state : 1          */           private string id;         private string categoryname;         private string state;           public string getid() {             return id;         }           public void setid(string id) {             this.id = id;         }           public string getcategoryname() {             return categoryname;         }           public void setcategoryname(string categoryname) {             this.categoryname = categoryname;         }           public string getstate() {             return state;         }           public void setstate(string state) {             this.state = state;         }     } }

2.popupwindow  

public class commonpopwindow {     private static popupwindow mpopupwindow;     private static builder mbuilder;     private static view mcontentview;     private static window mwindow;       public interface viewclicklistener {         void getchildview(popupwindow mpopupwindow, view view, int mlayoutresid);     }       private commonpopwindow() {         mbuilder = new builder();     }       public static builder newbuilder() {         if (mbuilder == null) {             mbuilder = new builder();         }         return mbuilder;     }       /**      * 获取popupwindow宽度      *      * @return      */     public int getwidth() {         if (mpopupwindow != null) {             return mcontentview.getmeasuredwidth();         }         return 0;     }         /**      * 获取popupwindow高度      *      * @return      */     public int getheight() {         if (mpopupwindow != null) {             return mcontentview.getmeasuredheight();         }         return 0;     }       /**      * 显示在控件的下方      */     public commonpopwindow showdownpop(view parent) {         if (parent.getvisibility() == view.gone) {             mpopupwindow.showatlocation(parent, gravity.no_gravity, 0, 0);         } else {             int[] location = new int[2];             parent.getlocationonscreen(location);             if (mpopupwindow != null) {                 mpopupwindow.showatlocation(parent, gravity.no_gravity, location[0], location[1] + parent.getheight());             }         }         return this;     }       /**      * 显示在控件的上方      */     public commonpopwindow showasup(view view) {         if (view.getvisibility() == view.gone) {             mpopupwindow.showatlocation(view, gravity.no_gravity, 0, 0);         } else {             int[] location = new int[2];             view.getlocationonscreen(location);             if (mpopupwindow != null) {                 mpopupwindow.showatlocation(view, gravity.no_gravity, location[0], location[1] - view.getheight());                 //方式二 //                mpopupwindow.showasdropdown(view, 0, -(getheight() + view.getmeasuredheight()));             }         }         return this;     }       /**      * 显示在控件的左边      */     public commonpopwindow showasleft(view view) {         if (view.getvisibility() == view.gone) {             mpopupwindow.showatlocation(view, gravity.no_gravity, 0, 0);         } else {             int[] location = new int[2];             view.getlocationonscreen(location);             if (mpopupwindow != null) {                 mpopupwindow.showatlocation(view, gravity.no_gravity, location[0] - getwidth(), location[1]);             }         }         return this;     }       /**      * 显示在控件右边      */     public commonpopwindow showasright(view view) {         if (view.getvisibility() == view.gone) {             mpopupwindow.showatlocation(view, gravity.no_gravity, 0, 0);         } else {             int[] location = new int[2];             view.getlocationonscreen(location);             if (mpopupwindow != null) {                 mpopupwindow.showatlocation(view, gravity.no_gravity, location[0] + view.getwidth(), location[1]);             }         }         return this;     }       /**      * 显示控件下方      *      * @param view      * @return      */     public commonpopwindow showasdown(view view) {         if (mpopupwindow != null) {             mpopupwindow.showasdropdown(view);         }         return this;     }       /**      * 全屏弹出      */     public commonpopwindow showasbottom(view view) {         if (view.getvisibility() == view.gone) {             mpopupwindow.showatlocation(view, gravity.no_gravity, 0, 0);         } else {             int[] location = new int[2];             view.getlocationonscreen(location);             if (mpopupwindow != null) {                 mpopupwindow.showatlocation(view, gravity.bottom, 0, 0);             }         }         return this;     }       public commonpopwindow showatlocation(view anchor, int gravity, int x, int y) {         if (mpopupwindow != null) {             mpopupwindow.showatlocation(anchor, gravity, x, y);         }         return this;     }       /**      * 取消      */     public static void dismiss() {         if (mwindow != null) {             windowmanager.layoutparams params = mwindow.getattributes();             params.alpha = 1.0f;             mwindow.setattributes(params);         }         if (mpopupwindow != null && mpopupwindow.isshowing())             mpopupwindow.dismiss();     }       /*      * ---------------------builder-------------------------      */     public static class builder implements popupwindow.ondismisslistener {         private context mcontext;         private int mlayoutresid;//布局id         private int mwidth, mheight;//弹窗宽高         private int manimationstyle;//动画样式         private viewclicklistener mlistener;//子view监听回调         private drawable mdrawable;//背景drawable         private boolean mtouchable = true;//是否相应touch事件         private boolean mfocusable = true;//是否获取焦点         private boolean moutsidetouchable = true;//设置外部是否点击         private boolean mbackgrounddarkenable = false;//是否背景窗体变暗         private float mdarkalpha = 1.0f;//透明值           public commonpopwindow build(context context) {             this.mcontext = context;             commonpopwindow popwindow = new commonpopwindow();             apply();             if (mlistener != null && mlayoutresid != 0) {                 mlistener.getchildview(mpopupwindow, mcontentview, mlayoutresid);             }             return popwindow;         }           private void apply() {             if (mlayoutresid != 0) {                 mcontentview = layoutinflater.from(mcontext).inflate(mlayoutresid, null);             }             if (mwidth != 0 && mheight != 0) {                 mpopupwindow = new popupwindow(mcontentview, mwidth, mheight);             } else {                 mpopupwindow = new popupwindow(mcontentview, viewgroup.layoutparams.wrap_content, viewgroup.layoutparams.wrap_content);             }               mpopupwindow.settouchable(mtouchable);             mpopupwindow.setfocusable(mfocusable);             mpopupwindow.setoutsidetouchable(moutsidetouchable);               if (mdrawable != null) {                 mpopupwindow.setbackgrounddrawable(mdrawable);             } else {                 mpopupwindow.setbackgrounddrawable(new colordrawable());             }             if (manimationstyle != -1) {                 mpopupwindow.setanimationstyle(manimationstyle);             }             if (mwidth == 0 || mheight == 0) {                 measurewidthandheight(mcontentview);                 //如果没有设置高度的情况下,设置宽高并赋值                 mwidth = mpopupwindow.getcontentview().getmeasuredwidth();                 mheight = mpopupwindow.getcontentview().getmeasuredheight();             }               activity activity = (activity) mcontext;             if (activity != null && mbackgrounddarkenable) {                 float alpha = (mdarkalpha >= 0f || mdarkalpha margin_alpha * mmintextsize / 2) {             // 往下滑超过离开距离             movetailtohead();             mmovelen = mmovelen - margin_alpha * mmintextsize;         } else if (mmovelen < -margin_alpha * mmintextsize / 2) {             // 往上滑超过离开距离             moveheadtotail();             mmovelen = mmovelen + margin_alpha * mmintextsize;         }           mlastdowny = event.gety();         invalidate();     }       private void doup(motionevent event) {         // 抬起手后mcurrentselected的位置由当前位置move到中间选中位置         if (math.abs(mmovelen) < 0.0001) {             mmovelen = 0;             return;         }         if (mtask != null) {             mtask.cancel();             mtask = null;         }         mtask = new mytimertask(updatehandler);         timer.schedule(mtask, 0, 10);     }       class mytimertask extends timertask {         handler handler;           public mytimertask(handler handler) {             this.handler = handler;         }           @override         public void run() {             handler.sendmessage(handler.obtainmessage());         }       }       public interface onselectlistener {         void onselect(selectbean.datasbean pickers);     } }

5.activity_main.xml布局

           

6.mainactivity

public class mainactivity extends appcompatactivity implements view.onclicklistener,commonpopwindow.viewclicklistener {       private textview click;     private textview text;     private string categoryname;     private list datas;       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         initview();         initdata();         initlistener();     }     private void initlistener() {         click.setonclicklistener(this);     }       private void initdata() {         //模拟请求后台返回数据         string response = "{"ret":0,"msg":"succes,","datas":[{"id":" 0","categoryname":"本人","state":"1"},{"id":"1","categoryname":"父亲","state":"1"},{"id":"2","categoryname":"母亲","state":"1"},{"id":"3","categoryname":"配偶","state":"1"},{"id":"4","categoryname":"其他","state":"1"}]}";         selectbean selectbean = new gson().fromjson(response, selectbean.class);         //0请求表示成功         if (selectbean.getret() == 0) {             //滚动选择数据集合             datas = selectbean.getdatas();         }     }       private void initview() {         click = findviewbyid(r.id.textclick);         text = findviewbyid(r.id.text);     }       @override     public void onclick(view v) {         switch (v.getid()) {             case r.id.textclick:                 setaddressselectorpopup(v);                 break;         }     }       /**      * 将选择器放在底部弹出框      * @param v      */     private void setaddressselectorpopup(view v) {         int screenheigh = getresources().getdisplaymetrics().heightpixels;           commonpopwindow.newbuilder()                 .setview(r.layout.pop_picker_selector_bottom)                // .setanimationstyle(r.style.animup)                 .setbackgrounddrawable(new bitmapdrawable())                 .setsize(viewgroup.layoutparams.match_parent, math.round(screenheigh * 0.3f))                 .setviewonclicklistener(this)                 .setbackgrounddarkenable(true)                 .setbackgroundalpha(0.7f)                 .setbackgrounddrawable(new colordrawable(999999))                 .build(this)                 .showasbottom(v);     }         @override     public void getchildview(final popupwindow mpopupwindow, view view, int mlayoutresid) {         switch (mlayoutresid) {             case r.layout.pop_picker_selector_bottom:                 textview imagebtn = view.findviewbyid(r.id.img_guanbi);                 pickerscrollview addressselector = view.findviewbyid(r.id.address);                   // 设置数据,默认选择第一条                 addressselector.setdata(datas);                 addressselector.setselected(0);                   //滚动监听                 addressselector.setonselectlistener(new pickerscrollview.onselectlistener() {                     @override                     public void onselect(selectbean.datasbean pickers) {                         categoryname = pickers.getcategoryname();                     }                 });                   //完成按钮                 imagebtn.setonclicklistener(new view.onclicklistener() {                     @override                     public void onclick(view v) {                         mpopupwindow.dismiss();                         if (categoryname==null){                             text.settext(datas.get(2).getcategoryname());                             toast.maketext(mainactivity.this, "默认第一条", toast.length_short).show();                         }else {                             text.settext(categoryname);                             toast.maketext(mainactivity.this, "滚动选择", toast.length_short).show();                         }                       }                 });                 break;         }     } }

以上就是android开发分享Android PickerScrollView滑动选择控件使用方法详解的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/adkf/1080436.html

Android PickerScrollView滑动选择控件android开发android开发教程android教程android软件开发 赞 (0) 3418978434189784 0 0 生成海报


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3