Skip to content

Commit 21ff5e2

Browse files
committed
添加城市选择器
1 parent b13a26f commit 21ff5e2

148 files changed

Lines changed: 19197 additions & 72 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# About
2-
安卓选择器类库,包括日期时间选择器、一二三级联动选择器、颜色选择器、文件目录选择器、数字选择器。
2+
安卓选择器类库,包括日期时间选择器、一二三级联动选择器、城市选择器、颜色选择器、文件目录选择器、数字选择器。
33
Picker for android, include date&time/option/color/file&directory/number.
44

55
# Install
@@ -13,8 +13,8 @@ dependencies {
1313
}
1414
```
1515
注:
16-
滑轮选择器名称较长时排版混乱问题还未得到很好解决。
17-
API级别>=8,项目编码为UTF-8。
16+
滑轮选择器的名称较长时,将以“...”显示超出的部分。
17+
支持android2.2+,项目编码为UTF-8。
1818

1919
# Simple
2020
日期选择器:
@@ -45,7 +45,7 @@ API级别>=8,项目编码为UTF-8。
4545
picker.showAtBottom();
4646
```
4747

48-
单项选择器:
48+
单项选择器(可用于性别、学历、职业等选择)
4949
```java
5050
OptionPicker picker = new OptionPicker(this);
5151
picker.setScrollingDuration(100);
@@ -99,7 +99,7 @@ API级别>=8,项目编码为UTF-8。
9999
picker.showAtBottom();
100100
```
101101

102-
三级联动选择器:
102+
三级联动选择器(参见城市选择器@CityPicker)
103103
```java
104104
final ArrayList<String> option1 = new ArrayList<String>();
105105
option1.add("贵州省");
@@ -187,12 +187,12 @@ API级别>=8,项目编码为UTF-8。
187187
});
188188
picker.showAtBottom();
189189
```
190-
数字选择器:
190+
数字选择器(可用于身高、体重、年龄等选择)
191191
```java
192192
NumberPicker picker = new NumberPicker(this);
193-
picker.setRange(0, 100);
194-
picker.setSelectedNumber(50);
195-
picker.setLabel("%");
193+
picker.setRange(145, 200);
194+
picker.setSelectedNumber(172);
195+
picker.setLabel("cm");
196196
picker.setOnWheelListener(new WheelPicker.OnWheelListener<Integer>() {
197197
@Override
198198
public void onSubmit(Integer result) {
@@ -201,23 +201,38 @@ API级别>=8,项目编码为UTF-8。
201201
});
202202
picker.showAtBottom();
203203
```
204+
城市选择器:
205+
```java
206+
CityPicker picker = new CityPicker(activity);
207+
picker.setSelectedCity("贵州", "毕节", "纳雍");
208+
picker.setOnCityPickListener(new CityPicker.OnCityPickListener() {
209+
@Override
210+
public void onCityPicked(String province, String city, String county) {
211+
212+
}
213+
});
214+
picker.showAtBottom();
215+
```
204216

205217
# Thanks
206-
修改使用了以下项目:<br />
218+
修改了使用以下项目:<br />
207219
https://code.google.com/p/android-wheel<br />
208220
https://github.com/saiwu-bigkoo/PickerView<br />
209221
https://github.com/jbruchanov/AndroidColorPicker<br />
210222
https://github.com/JoanZapata/base-adapter-helper<br />
223+
直接使用了以下项目:<br />
224+
https://github.com/alibaba/fastjson<br />
211225

212226
# Screenshots
213-
![](/screenshots/datepicker.jpg)
214-
![](/screenshots/timepicker.jpg)
215-
![](/screenshots/1optionpicker.jpg)
216-
![](/screenshots/2optionpicker.jpg)
217-
![](/screenshots/3optionpicker.jpg)
218-
![](/screenshots/colorpicker.jpg)
219-
![](/screenshots/filepicker.jpg)
220-
![](/screenshots/dirpicker.jpg)
227+
![日期选择器效果图](/screenshots/datepicker.jpg)
228+
![时间选择器效果图](/screenshots/timepicker.jpg)
229+
![单项选择器效果图](/screenshots/1optionpicker.jpg)
230+
![二级联动选择器效果图](/screenshots/2optionpicker.jpg)
231+
![三级联动选择器效果图](/screenshots/3optionpicker.jpg)
232+
![颜色选择器效果图](/screenshots/colorpicker.jpg)
233+
![文件选择器效果图](/screenshots/filepicker.jpg)
234+
![目录选择器效果图](/screenshots/dirpicker.jpg)
235+
![城市选择器效果图](/screenshots/citypicker.jpg)
221236

222237
# Contact
223238
李玉江, QQ:1032694760, Email:liyujiang_tk@yeah.net

app/src/main/java/cn/qqtheme/androidpicker/MainActivity.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.Date;
1212

1313
import cn.qqtheme.framework.helper.Common;
14+
import cn.qqtheme.framework.picker.CityPicker;
1415
import cn.qqtheme.framework.picker.ColorPicker;
1516
import cn.qqtheme.framework.picker.DateTimePicker;
1617
import cn.qqtheme.framework.picker.FilePicker;
@@ -201,9 +202,9 @@ public void onFilePicked(String currentPath) {
201202

202203
public void onNumberPicker(View view) {
203204
NumberPicker picker = new NumberPicker(this);
204-
picker.setRange(0, 100);
205-
picker.setSelectedNumber(50);
206-
picker.setLabel("%");
205+
picker.setRange(145, 200);//身高范围
206+
picker.setSelectedNumber(172);
207+
picker.setLabel("cm");
207208
picker.setOnWheelListener(new WheelPicker.OnWheelListener<Integer>() {
208209
@Override
209210
public void onSubmit(Integer result) {
@@ -213,6 +214,18 @@ public void onSubmit(Integer result) {
213214
picker.showAtBottom();
214215
}
215216

217+
public void onCityPicker(View view) {
218+
CityPicker picker = new CityPicker(this);
219+
picker.setSelectedCity("贵州", "毕节", "纳雍");
220+
picker.setOnCityPickListener(new CityPicker.OnCityPickListener() {
221+
@Override
222+
public void onCityPicked(String province, String city, String county) {
223+
showToast(province + "-" + city + "-" + county);
224+
}
225+
});
226+
picker.showAtBottom();
227+
}
228+
216229
public void onGithub(View view) {
217230
Intent intent = new Intent(this, GithubActivity.class);
218231
startActivity(intent);

app/src/main/res/layout/activity_main.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@
6262
android:onClick="onNumberPicker"
6363
android:text="number picker" />
6464

65+
<Button
66+
android:layout_width="match_parent"
67+
android:layout_height="wrap_content"
68+
android:onClick="onCityPicker"
69+
android:text="city picker" />
70+
6571
<Button
6672
android:layout_width="match_parent"
6773
android:layout_height="wrap_content"

framework-picker/src/main/assets/city.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

framework-picker/src/main/java/cn/qqtheme/framework/adapter/AdapterHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ public AdapterHelper setTag(int viewId, int key, Object tag) {
448448
*/
449449
public AdapterHelper setChecked(int viewId, boolean checked) {
450450
View view = retrieveView(viewId);
451-
// FIXME: 2015/10/26 View²»ÄÜÇ¿ÖÆ×ª»»ÎªCheckable, thanks https://github.com/Flywhiter
451+
// FIXME: 2015/10/26 View不能强制转换为Checkable, thanks https://github.com/Flywhiter
452452
if (view instanceof CompoundButton) {
453453
((CompoundButton) view).setChecked(checked);
454454
} else if (view instanceof CheckedTextView) {

framework-picker/src/main/java/cn/qqtheme/framework/adapter/FileAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import cn.qqtheme.framework.entity.FileItem;
66
import cn.qqtheme.framework.helper.FileUtils;
7-
import cn.qqtheme.framework.helper.Logger;
7+
import cn.qqtheme.framework.helper.LogUtils;
88
import cn.qqtheme.framework.picker.R;
99

1010
import java.io.File;
@@ -73,13 +73,13 @@ public ArrayList<FileItem> loadData(String path) {
7373
public ArrayList<FileItem> loadData(String path, boolean notifyDataSetChanged) {
7474
ArrayList<FileItem> datas = new ArrayList<FileItem>();
7575
if (path == null) {
76-
Logger.warn("current directory is null");
76+
LogUtils.warn("current directory is null");
7777
return datas;
7878
}
7979
if (rootPath == null) {
8080
rootPath = path;
8181
}
82-
Logger.debug("current directory path: " + path);
82+
LogUtils.debug("current directory path: " + path);
8383
currentPath = path;
8484
if (showHomeDir) {
8585
//添加“返回主目录”
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cn.qqtheme.framework.helper;
2+
3+
import android.content.Context;
4+
5+
import java.io.BufferedReader;
6+
import java.io.InputStream;
7+
import java.io.InputStreamReader;
8+
9+
/**
10+
* 操作安装包中的“assets”目录下的文件
11+
*
12+
* @author 李玉江[QQ:1023694760]
13+
* @version 2013-11-2
14+
*/
15+
public class AssetsUtils {
16+
17+
/**
18+
* read file content
19+
*
20+
* @param assetPath
21+
* @return String
22+
*/
23+
public static String readText(Context context, String assetPath) {
24+
LogUtils.debug("read assets file as text: " + assetPath);
25+
try {
26+
StringBuilder sb = new StringBuilder();
27+
InputStream is = context.getAssets().open(assetPath);
28+
BufferedReader br = new BufferedReader(new InputStreamReader(is,
29+
"utf-8"));
30+
while (br.ready()) {
31+
String line = br.readLine();
32+
if (line != null) {
33+
// 读出来文件末尾多了“null”?
34+
sb.append(line).append("\n");
35+
}
36+
}
37+
br.close();
38+
is.close();
39+
return sb.toString();
40+
} catch (Exception e) {
41+
LogUtils.error(e);
42+
return "";
43+
}
44+
}
45+
46+
}

framework-picker/src/main/java/cn/qqtheme/framework/helper/Common.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static boolean externalMounted() {
3636
if (state.equals(Environment.MEDIA_MOUNTED)) {
3737
return true;
3838
}
39-
Logger.warn("external storage unmounted");
39+
LogUtils.warn("external storage unmounted");
4040
return false;
4141
}
4242

@@ -56,7 +56,7 @@ public static String getRootPath(Context context) {
5656
if (file != null) {
5757
path = FileUtils.separator(file.getAbsolutePath());
5858
}
59-
Logger.debug("storage root path: " + path);
59+
LogUtils.debug("storage root path: " + path);
6060
return path;
6161
}
6262

@@ -70,7 +70,7 @@ public static int[] getPixels(Context ctx) {
7070
windowMgr.getDefaultDisplay().getMetrics(dm);
7171
pixels[0] = dm.widthPixels;
7272
pixels[1] = dm.heightPixels;
73-
Logger.debug("width=" + pixels[0] + ", height=" + pixels[1]);
73+
LogUtils.debug("width=" + pixels[0] + ", height=" + pixels[1]);
7474
return pixels;// e.g. 720,1184
7575
}
7676

@@ -80,7 +80,7 @@ public static int[] getPixels(Context ctx) {
8080
public static int toPx(Context context, float dpValue) {
8181
final float scale = context.getResources().getDisplayMetrics().density;
8282
int pxValue = (int) (dpValue * scale + 0.5f);
83-
Logger.debug(dpValue + " dp == " + pxValue + " px");
83+
LogUtils.debug(dpValue + " dp == " + pxValue + " px");
8484
return pxValue;
8585
}
8686

@@ -114,10 +114,10 @@ public static String toColorString(int color, boolean includeAlpha) {
114114
String colorString;
115115
if (includeAlpha) {
116116
colorString = alpha + red + green + blue;
117-
Logger.debug(String.format("%d to color string is %s", color, colorString));
117+
LogUtils.debug(String.format("%d to color string is %s", color, colorString));
118118
} else {
119119
colorString = red + green + blue;
120-
Logger.debug(String.format("%d to color string is %s%s%s%s, exclude alpha is %s", color, alpha, red, green, blue, colorString));
120+
LogUtils.debug(String.format("%d to color string is %s%s%s%s, exclude alpha is %s", color, alpha, red, green, blue, colorString));
121121
}
122122
return colorString;
123123
}
@@ -210,7 +210,7 @@ public static int calculateHeight(View view) {
210210
totalHeight += convertView.getMeasuredHeight();
211211
}
212212
totalHeight += listView.getDividerHeight() * (count - 1);
213-
Logger.debug("ListView height is " + totalHeight + " dp");
213+
LogUtils.debug("ListView height is " + totalHeight + " dp");
214214
}
215215
} else if (view instanceof ScrollView) {
216216
ScrollView scrollView = (ScrollView) view;
@@ -227,13 +227,13 @@ public static int calculateHeight(View view) {
227227
layout.measure(widthMeasureSpec, heightMeasureSpec);
228228
totalHeight += layout.getMeasuredHeight();
229229
}
230-
Logger.debug("LinearLayout height is " + totalHeight + " dp");
230+
LogUtils.debug("LinearLayout height is " + totalHeight + " dp");
231231
} else {
232232
view.measure(widthMeasureSpec, heightMeasureSpec);
233233
totalHeight += view.getMeasuredHeight();
234-
Logger.debug("View height is " + totalHeight + "");
234+
LogUtils.debug("View height is " + totalHeight + "");
235235
}
236-
Logger.debug("View total height is " + totalHeight + "");
236+
LogUtils.debug("View total height is " + totalHeight + "");
237237
return totalHeight;
238238
}
239239

0 commit comments

Comments
 (0)