AndroidPicker的使用
来源:互联网 发布:淘宝优惠券佣金怎么算 编辑:程序博客网 时间:2024/06/03 19:09
参考:
https://github.com/gzu-liyujiang/AndroidPicker
效果图:
一、添加依赖:
project:build.gradle
allprojects { repositories { jcenter() maven { url "https://jitpack.io"} }}
app:build.gradle
compile 'com.alibaba:fastjson:1.1.55.android' compile('com.github.gzu-liyujiang.AndroidPicker:WheelPicker:1.5.4') { exclude group: 'com.android.support' }// compile('com.github.gzu-liyujiang.AndroidPicker:FilePicker:1.5.4') {// exclude group: 'com.android.support'// }// compile('com.github.gzu-liyujiang.AndroidPicker:ColorPicker:1.5.4') {// exclude group: 'com.android.support'// }
布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.lenovo.mypicker.MainActivity"> <TextView android:id="@+id/tv_address" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="你选择的地址" android:textColor="@color/colorPrimary" android:textSize="25sp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onAddressPicker" android:text="地址选择(包括省级、地级、县级)" /></LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity { private TextView tvAddress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvAddress = ((TextView) this.findViewById(R.id.tv_address)); } public void onAddressPicker(View view) { AddressPickTask task = new AddressPickTask(this);// task.setHideProvince(true);//隐藏省,显示市、县// task.setHideCounty(true);//隐藏县,显示省、市 task.setCallback(new AddressPickTask.Callback() { @Override public void onAddressInitFailed() { ToastUtil.showToast(MainActivity.this, "数据初始化失败"); } @Override public void onAddressPicked(Province province, City city, County county) { String address; if (county == null) { address = province.getAreaName() + city.getAreaName(); ToastUtil.showToast(MainActivity.this, province.getAreaName() + city.getAreaName()); } else { address = province.getAreaName() + city.getAreaName() + county.getAreaName(); ToastUtil.showToast(MainActivity.this, province.getAreaName() + city.getAreaName() + county.getAreaName()); } tvAddress.setText(address); } }); //以下几种格式显示效果相同// task.execute("广东省", "深圳市", "龙岗区");//设置默认// task.execute("广东", "深圳", "龙岗");//设置默认// task.execute("广东省", "深圳", "龙岗");//设置默认// task.execute("广", "深圳", "龙岗");//设置默认// task.execute("广", "深", "龙岗");//设置默认 task.execute("广", "深", "龙");//设置默认 }}
AddressPickTask
city.json 从作者的GitHub上获取,并下载后放在assets目录下。
/** * 获取地址数据并显示地址选择器 * * @author 李玉江[QQ:1032694760] * @since 2015/12/15 */public class AddressPickTask extends AsyncTask<String, Void, ArrayList<Province>> { private Activity activity; private ProgressDialog dialog; private String selectedProvince = "", selectedCity = "", selectedCounty = ""; private boolean hideProvince = false; private boolean hideCounty = false; /*-------------------------------构造方法-------------------------------*/ public AddressPickTask(Activity activity) { this.activity = activity; } /*-------------------------------set方法-------------------------------*/ /** * 隐藏省级行政区,只显示地市级和区县级。 * * @param hideProvince */ public void setHideProvince(boolean hideProvince) { this.hideProvince = hideProvince; } /** * 隐藏县级行政区,只显示省级和市级。 * * @param hideCounty */ public void setHideCounty(boolean hideCounty) { this.hideCounty = hideCounty; } /*-------------------------------接口回调-------------------------------*/ private Callback callback; public void setCallback(Callback callback) { this.callback = callback; } public interface Callback extends AddressPicker.OnAddressPickListener { void onAddressInitFailed(); } /*-------------------------------AsyncTask方法--------------------------------*/ @Override protected void onPreExecute() { dialog = ProgressDialog.show(activity, null, "正在初始化数据...", true, true); } @Override protected ArrayList<Province> doInBackground(String... params) { if (params != null) { switch (params.length) { case 1: selectedProvince = params[0]; break; case 2: selectedProvince = params[0]; selectedCity = params[1]; break; case 3: selectedProvince = params[0]; selectedCity = params[1]; selectedCounty = params[2]; break; default: break; } } ArrayList<Province> data = new ArrayList<>(); try { String json = ConvertUtils.toString(activity.getAssets().open("city.json")); data.addAll(JSON.parseArray(json, Province.class)); } catch (Exception e) { e.printStackTrace(); } return data; } @SuppressWarnings("deprecation") @Override protected void onPostExecute(ArrayList<Province> result) { dialog.dismiss(); if (result.size() > 0) { AddressPicker picker = new AddressPicker(activity, result); /** 显示几列 **/ picker.setHideProvince(hideProvince); picker.setHideCounty(hideCounty); /** 标题区域 **/ picker.setTopBackgroundColor(activity.getResources().getColor(R.color.brown));//设置标题背景颜色 picker.setTopHeight(35);//设置顶部标题栏高度(单位为dp) picker.setCancelText("取消"); picker.setCancelTextSize(13); picker.setCancelTextColor(activity.getResources().getColor(R.color.colorPrimary));//设置顶部标题栏取消按钮文字颜色 picker.setCancelVisible(true);//设置左边按钮是否显示 picker.setTitleText("所在区域");//标题栏 picker.setTitleTextSize(13);//标题栏大小 picker.setTitleTextColor(activity.getResources().getColor(R.color.colorPrimary));//设置所在区域颜色 picker.setSubmitText("完成");//设置标题右边文字 picker.setSubmitTextSize(13);//设置完成按钮大小 picker.setSubmitTextColor(activity.getResources().getColor(R.color.colorPrimary));//设置完成按钮颜色 /** 标题与列表的分割线 **/ picker.setTopLineColor(activity.getResources().getColor(R.color.qing)); picker.setTopLineVisible(true); picker.setTopLineHeight(10); /** 列表区域 **/ picker.setTextSize(16);//字体大小 picker.setTextColor(activity.getResources().getColor(R.color.purple));//设置省市县字体滚动颜色 picker.setDividerColor(activity.getResources().getColor(R.color.colorAccent));//设置分割线的颜色 /** 弹框消失的设置 **/ picker.setCancelable(true);//false:必须选择后弹框才消失,true:点击框外可弹框消失 /** 列的比重 **/ if (hideCounty) { picker.setColumnWeight(0.8f, 1.0f); } else if (hideProvince) { picker.setColumnWeight(1.0f, 0.8f); } else { picker.setColumnWeight(1.0f, 1.0f, 1.0f); } picker.setSelectedItem(selectedProvince, selectedCity, selectedCounty);//设置默认 picker.setOnAddressPickListener(callback); picker.show(); } else { callback.onAddressInitFailed(); } }}
res/values/colors
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> <color name="qing">#60ff40</color> <color name="yellow">#ffe940</color> <color name="purple">#ed0eb6</color> <color name="brown">#d65d17</color></resources>
ToastUtil
/** * 防止多次点击,Toast重复显示, */public class ToastUtil { private static Toast toast; public static void showToast(Context context, String content) { if (toast == null) { toast = Toast.makeText(context, content, Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); } else { toast.setText(content); } toast.show(); }}
阅读全文
0 0
- AndroidPicker的使用
- Data,Time-AndroidPicker的使用
- AndroidPicker时间类的选择器
- 安卓选择器类库AndroidPicker、定时器类库CountdownView、上拉刷新加载更多的EasyRecyclerView
- AndroidPicker: 安卓选择器类库,包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- hdu1281 棋盘游戏 二分图最大匹配 枚举
- 关于双重指针指向
- 实例详解Java中如何对方法进行调用
- 递归二叉树的序列打印
- Handler,Looper,MessageQueue,Message解析
- AndroidPicker的使用
- No installed build tools found. Install the Android build tools version 19.1.0 or higher.
- asp.net mvc Html.Partial or Html.Action
- easyUI使用datagrid分页栏不显示
- 总结IOS界面间跳转的几种方法
- SQL的连表查询
- 如何将本地项目上传至GitHub
- SpringMVC使用fastjson自定义Converter支持返回jsonp格式
- ORACLE RMAN 高级话题一(分片与压缩)