package cn.qqtheme.androidpicker;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import cn.qqtheme.framework.entity.City;
import cn.qqtheme.framework.entity.County;
import cn.qqtheme.framework.entity.Province;
import cn.qqtheme.framework.picker.AddressPicker;
import cn.qqtheme.framework.picker.ColorPicker;
import cn.qqtheme.framework.picker.DatePicker;
import cn.qqtheme.framework.picker.DateTimePicker;
import cn.qqtheme.framework.picker.DoublePicker;
import cn.qqtheme.framework.picker.FilePicker;
import cn.qqtheme.framework.picker.LinkagePicker;
import cn.qqtheme.framework.picker.NumberPicker;
import cn.qqtheme.framework.picker.OptionPicker;
import cn.qqtheme.framework.picker.TimePicker;
import cn.qqtheme.framework.util.ConvertUtils;
import cn.qqtheme.framework.util.DateUtils;
import cn.qqtheme.framework.util.LogUtils;
import cn.qqtheme.framework.util.StorageUtils;
import cn.qqtheme.framework.widget.WheelView;
public class MainActivity extends BaseActivity {
@Override
protected View getContentView() {
return inflateView(R.layout.activity_main);
}
@Override
protected void setContentViewAfter(View contentView) {
}
@Override
public void onBackPressed() {
AppManager.getInstance().exitApp();
}
private void showToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
public void onNestView(View view) {
startActivity(new Intent(this, NestActivity.class));
}
public void onAnimationStyle(View view) {
final NumberPicker picker = new NumberPicker(this);
picker.setItemWidth(200);
View headerView = View.inflate(activity, R.layout.picker_header, null);
final TextView titleView = (TextView) headerView.findViewById(R.id.picker_title);
titleView.setText("自定义顶部视图");
headerView.findViewById(R.id.picker_close).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
picker.dismiss();
}
});
picker.setHeaderView(headerView);
picker.setAnimationStyle(R.style.Animation_CustomPopup);
picker.setCycleDisable(false);
picker.setOffset(5);//偏移量
picker.setRange(10.5, 20, 1.5);//数字范围
picker.setSelectedItem(18.0);
picker.setLabel("℃");
picker.setOnWheelListener(new NumberPicker.OnWheelListener() {
@Override
public void onWheeled(int index, Number item) {
titleView.setText(String.valueOf(item.floatValue()));
}
});
picker.show();
}
public void onAnimator(View view) {
CustomHeaderAndFooterPicker picker = new CustomHeaderAndFooterPicker(this);
picker.setOffset(3);//显示的条目的偏移量,条数为(offset*2+1)
picker.setGravity(Gravity.CENTER);//居中
picker.setOnOptionPickListener(new OptionPicker.OnOptionPickListener() {
@Override
public void onOptionPicked(int position, String option) {
showToast("index=" + position + ", item=" + option);
}
});
picker.show();
}
public void onYearMonthDayPicker(View view) {
final DatePicker picker = new DatePicker(this);
picker.setCanceledOnTouchOutside(true);
picker.setUseWeight(true);
picker.setTopPadding(ConvertUtils.toPx(this, 20));
picker.setRangeEnd(2111, 1, 11);
picker.setRangeStart(2016, 8, 29);
picker.setSelectedItem(2050, 10, 14);
picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
@Override
public void onDatePicked(String year, String month, String day) {
showToast(year + "-" + month + "-" + day);
}
});
picker.setOnWheelListener(new DatePicker.OnWheelListener() {
@Override
public void onYearWheeled(int index, String year) {
picker.setTitleText(year + "-" + picker.getSelectedMonth() + "-" + picker.getSelectedDay());
}
@Override
public void onMonthWheeled(int index, String month) {
picker.setTitleText(picker.getSelectedYear() + "-" + month + "-" + picker.getSelectedDay());
}
@Override
public void onDayWheeled(int index, String day) {
picker.setTitleText(picker.getSelectedYear() + "-" + picker.getSelectedMonth() + "-" + day);
}
});
picker.show();
}
public void onYearMonthDayTimePicker(View view) {
DateTimePicker picker = new DateTimePicker(this, DateTimePicker.HOUR_24);
picker.setDateRangeStart(2017, 1, 1);
picker.setDateRangeEnd(2025, 11, 11);
picker.setTimeRangeStart(9, 0);
picker.setTimeRangeEnd(20, 30);
picker.setOnDateTimePickListener(new DateTimePicker.OnYearMonthDayTimePickListener() {
@Override
public void onDateTimePicked(String year, String month, String day, String hour, String minute) {
showToast(year + "-" + month + "-" + day + " " + hour + ":" + minute);
}
});
picker.show();
}
public void onYearMonthPicker(View view) {
DatePicker picker = new DatePicker(this, DatePicker.YEAR_MONTH);
picker.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
picker.setWidth((int) (picker.getScreenWidthPixels() * 0.6));
picker.setRangeStart(2016, 10, 14);
picker.setRangeEnd(2020, 11, 11);
picker.setSelectedItem(2017, 9);
picker.setOnDatePickListener(new DatePicker.OnYearMonthPickListener() {
@Override
public void onDatePicked(String year, String month) {
showToast(year + "-" + month);
}
});
picker.show();
}
public void onMonthDayPicker(View view) {
DatePicker picker = new DatePicker(this, DatePicker.MONTH_DAY);
picker.setGravity(Gravity.CENTER);//弹框居中
picker.setRangeStart(5, 1);
picker.setRangeEnd(12, 31);
picker.setSelectedItem(10, 14);
picker.setOnDatePickListener(new DatePicker.OnMonthDayPickListener() {
@Override
public void onDatePicked(String month, String day) {
showToast(month + "-" + day);
}
});
picker.show();
}
public void onTimePicker(View view) {
TimePicker picker = new TimePicker(this, TimePicker.HOUR_24);
picker.setRangeStart(0, 0);//00:00
picker.setRangeEnd(23, 59);//23:59
int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
int currentMinute = Calendar.getInstance().get(Calendar.MINUTE);
picker.setSelectedItem(currentHour, currentMinute);
picker.setTopLineVisible(false);
picker.setOnTimePickListener(new TimePicker.OnTimePickListener() {
@Override
public void onTimePicked(String hour, String minute) {
showToast(hour + ":" + minute);
}
});
picker.show();
}
public void onOptionPicker(View view) {
OptionPicker picker = new OptionPicker(this, new String[]{
"第一项", "第二项", "这是一个很长很长很长很长很长很长很长很长很长的很长很长的很长很长的项"
});
picker.setCanceledOnTouchOutside(false);
picker.setDividerRatio(WheelView.DividerConfig.FILL);
picker.setShadowColor(Color.RED, 40);
picker.setSelectedIndex(1);
picker.setCycleDisable(true);
picker.setTextSize(11);
picker.setOnOptionPickListener(new OptionPicker.OnOptionPickListener() {
@Override
public void onOptionPicked(int index, String item) {
showToast("index=" + index + ", item=" + item);
}
});
picker.show();
}
public void onDoublePicker(View view) {
final ArrayList<String> firstData = new ArrayList<>();
firstData.add("2017年5月2日星期二");
firstData.add("2017年5月3日星期三");
firstData.add("2017年5月4日星期四");
firstData.add("2017年5月5日星期五");
firstData.add("2017年5月6日星期六");
final ArrayList<String> secondData = new ArrayList<>();
secondData.add("电动自行车");
secondData.add("二轮摩托车");
secondData.add("私家小汽车");
secondData.add("公共交通汽车");
final DoublePicker picker = new DoublePicker(this, firstData, secondData);
picker.setDividerVisible(true);
picker.setCycleDisable(false);
picker.setSelectedIndex(2, 1);
picker.setFirstLabel("于", null);
picker.setSecondLabel("骑/乘", "出发");
picker.setOnPickListener(new DoublePicker.OnPickListener() {
@Override
public void onPicked(int selectedFirstIndex, int selectedSecondIndex) {
showToast(firstData.get(selectedFirstIndex) + " " + secondData.get(selectedSecondIndex));
}
});
picker.show();
}
public void onLinkagePicker(View view) {
//联动选择器的更多用法,可参见AddressPicker和CarNumberPicker
LinkagePicker.DataProvider provider = new LinkagePicker.DataProvider() {
@Override
public boolean isOnlyTwo() {
return true;
}
@NonNull
@Override
public List<String> provideFirstData() {
ArrayList<String> firstList = new ArrayList<>();
firstList.add("12");
firstList.add("24");
return firstList;
}
@NonNull
@Override
public List<String> provideSecondData(int firstIndex) {
ArrayList<String> secondList = new ArrayList<>();
for (int i = 1; i <= (firstIndex == 0 ? 12 : 24); i++) {
String str = DateUtils.fillZero(i);
if (firstIndex == 0) {
str += "¥";
} else {
str += "$";
}
secondList.add(str);
}
return secondList;
}
@Nullable
@Override
public List<String> provideThirdData(int firstIndex, int secondIndex) {
return null;
}
};
LinkagePicker picker = new LinkagePicker(this, provider);
picker.setCycleDisable(true);
picker.setLabel("小时制", "点");
picker.setSelectedIndex(0, 8);
//picker.setSelectedItem("12", "9");
picker.setOnStringPickListener(new LinkagePicker.OnStringPickListener() {
@Override
public void onPicked(String first, String second, String third) {
showToast(first + "-" + second + "-" + third);
}
});
picker.show();
}
public void onConstellationPicker(View view) {
boolean isChinese = Locale.getDefault().getDisplayLanguage().contains("中文");
OptionPicker picker = new OptionPicker(this,
isChinese ? new String[]{
"水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座",
"狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座"
} : new String[]{
"Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer",
"Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn"
});
picker.setCycleDisable(false);//不禁用循环
picker.setTopBackgroundColor(0xFFEEEEEE);
picker.setTopHeight(30);
picker.setTopLineColor(0xFFEE0000);
picker.setTopLineHeight(1);
picker.setTitleText(isChinese ? "请选择" : "Please pick");
picker.setTitleTextColor(0xFF999999);
picker.setTitleTextSize(12);
picker.setCancelTextColor(0xFFEE0000);
picker.setCancelTextSize(13);
picker.setSubmitTextColor(0xFFEE0000);
picker.setSubmitTextSize(13);
picker.setTextColor(0xFFEE0000, 0xFF999999);
WheelView.DividerConfig config = new WheelView.DividerConfig();
config.setColor(0xFFEE0000);//线颜色
config.setAlpha(140);//线透明度
config.setRatio((float) (1.0 / 8.0));//线比率
picker.setDividerConfig(config);
picker.setBackgroundColor(0xFFE1E1E1);
//picker.setSelectedItem(isChinese ? "处女座" : "Virgo");
picker.setSelectedIndex(7);
picker.setCanceledOnTouchOutside(true);
picker.setOnOptionPickListener(new OptionPicker.OnOptionPickListener() {
@Override
public void onOptionPicked(int index, String item) {
showToast("index=" + index + ", item=" + item);
}
});
picker.show();
}
public void onNumberPicker(View view) {
NumberPicker picker = new NumberPicker(this);
picker.setWidth(picker.getScreenWidthPixels() / 2);
picker.setCycleDisable(false);
picker.setDividerVisible(false);
picker.setOffset(2);//偏移量
picker.setRange(145, 200, 1);//数字范围
picker.setSelectedItem(172);
picker.setLabel("厘米");
picker.setOnNumberPickListener(new NumberPicker.OnNumberPickListener() {
@Override
public void onNumberPicked(int index, Number item) {
showToast("index=" + index + ", item=" + item.intValue());
}
});
picker.show();
}
public void onAddressPicker(View view) {
AddressPickTask task = new AddressPickTask(this);
task.setHideProvince(false);
task.setHideCounty(false);
task.setCallback(new AddressPickTask.Callback() {
@Override
public void onAddressInitFailed() {
showToast("数据初始化失败");
}
@Override
public void onAddressPicked(Province province, City city, County county) {
if (county == null) {
showToast(province.getAreaName() + city.getAreaName());
} else {
showToast(province.getAreaName() + city.getAreaName() + county.getAreaName());
}
}
});
task.execute("贵州", "毕节", "纳雍");
}
public void onAddress2Picker(View view) {
try {
ArrayList<Province> data = new ArrayList<>();
String json = ConvertUtils.toString(getAssets().open("city2.json"));
data.addAll(JSON.parseArray(json, Province.class));
AddressPicker picker = new AddressPicker(this, data);
picker.setShadowVisible(true);
picker.setHideProvince(true);
picker.setSelectedItem("贵州", "贵阳", "花溪");
picker.setOnAddressPickListener(new AddressPicker.OnAddressPickListener() {
@Override
public void onAddressPicked(Province province, City city, County county) {
showToast("province : " + province + ", city: " + city + ", county: " + county);
}
});
picker.show();
} catch (Exception e) {
showToast(LogUtils.toStackTraceString(e));
}
}
public void onAddress3Picker(View view) {
AddressPickTask task = new AddressPickTask(this);
task.setHideCounty(true);
task.setCallback(new AddressPickTask.Callback() {
@Override
public void onAddressInitFailed() {
showToast("数据初始化失败");
}
@Override
public void onAddressPicked(Province province, City city, County county) {
showToast(province.getAreaName() + " " + city.getAreaName());
}
});
task.execute("四川", "阿坝");
}
public void onColorPicker(View view) {
ColorPicker picker = new ColorPicker(this);
picker.setInitColor(0xDD00DD);
picker.setOnColorPickListener(new ColorPicker.OnColorPickListener() {
@Override
public void onColorPicked(int pickedColor) {
showToast(ConvertUtils.toColorString(pickedColor));
}
});
picker.show();
}
public void onFilePicker(View view) {
FilePicker picker = new FilePicker(this, FilePicker.FILE);
picker.setShowHideDir(false);
//picker.setAllowExtensions(new String[]{".apk"});
picker.setOnFilePickListener(new FilePicker.OnFilePickListener() {
@Override
public void onFilePicked(String currentPath) {
showToast(currentPath);
}
});
picker.show();
}
public void onDirPicker(View view) {
FilePicker picker = new FilePicker(this, FilePicker.DIRECTORY);
picker.setRootPath(StorageUtils.getExternalRootPath() + "Download/");
picker.setItemHeight(30);
picker.setOnFilePickListener(new FilePicker.OnFilePickListener() {
@Override
public void onFilePicked(String currentPath) {
showToast(currentPath);
}
});
picker.show();
}
public void onContact(View view) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:liyujiang_tk@yeah.net"));
intent.putExtra(Intent.EXTRA_CC, new String[]
{"1032694760@qq.com"});
intent.putExtra(Intent.EXTRA_EMAIL, "");
intent.putExtra(Intent.EXTRA_TEXT, "欢迎提供意您的见或建议");
startActivity(Intent.createChooser(intent, "选择邮件客户端"));
}
}