Day11 **屏幕适配**+PickerView
一.屏幕适配:适配各种屏幕的手机
1.依赖:
implementation 'me.jessyan:autosize:0.9.1'
2.清单文件
<meta-data
android:name="design_width_in_dp"
android:value="360"/>
<meta-data
android:name="design_height_in_dp"
android:value="640"/>
3.设计稿的尺寸看这里:
4.布局文件单位还是使用dp
二.PickerView
依赖:
implementation 'com.contrarywind:Android-PickerView:4.1.9'
1.时间选择器
private void initTimerPicker() {
Calendar startDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
Calendar selectDate = Calendar.getInstance();
startDate.set(1990,1,1);
endDate.set(2030,1,1);
timePickerView = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String string = format.format(date);
tv_time.setText(string);
}
})
.setCancelText("取消")//取消按钮
.setSubmitText("确定")//确定按钮
.setTitleText("选择日期")//中间标题
.setCancelColor(Color.BLUE)//取消文字颜色
.setSubmitColor(Color.BLUE)//确定文字颜色
.setTitleColor(Color.BLACK)//中间标题文字颜色
.setBgColor(Color.GRAY)//背景颜色
.setDividerColor(Color.YELLOW)//分割线颜色
.setTitleBgColor(Color.RED)//上面标题背景颜色
.setTextColorCenter(Color.WHITE)//设置选中的颜色
.setTextColorOut(Color.GREEN)//设置未选中的颜色
.setTitleSize(28)//设置标题文字大小
.setContentTextSize(40)//设置下面文字大小
.setOutSideCancelable(false)//点击外部是否取消显示,默认是取消
.setDate(selectDate)//设置选中的时间,不设置默认是系统当前时间
.setRangDate(startDate,endDate)//设置开始时间和结束时间,不设置有默认的时间
.isCyclic(true)//是否循环滚钉
.setType(new boolean[]{true,true,true,false,false,false})//设置显示年月日时分秒 默认只显示年月日,不显示时分秒
.setLabel("年","月","日","时","分","秒")//设置显示的样式
.isCenterLabel(false)//设置年月日 是否显示在中间,一般设置为false
.build();
}
⚠️注意:想要弹出选择器不要忘记show();
2.地址选择器
private void initAddressPicker() {
optionsPickerView = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String province = provinceList.get(options1);//获取省份
String city = cityList.get(options1).get(options2);//获取该省份的城市
tv_address.setText(province+":"+city);
}
})
.setTitleText("选择城市")
.build();
provinceList.add("北京");
provinceList.add("天津");
provinceList.add("河北");
provinceList.add("山东");
ArrayList<String> list = new ArrayList<>();
list.add("丰台");
list.add("昌平");
list.add("通州");
list.add("大兴");
list.add("海淀");
ArrayList<String> list2 = new ArrayList<>();
list2.add("武清");
list2.add("西青");
list2.add("和平");
list2.add("河北");
list2.add("河西");
ArrayList<String> list3 = new ArrayList<>();
list3.add("沧州");
list3.add("邯郸");
list3.add("廊坊");
list3.add("邢台");
list3.add("保定");
ArrayList<String> list4 = new ArrayList<>();
list4.add("青岛");
list4.add("济南");
list4.add("淄博");
list4.add("潍坊");
cityList.add(list);
cityList.add(list2);
cityList.add(list3);
cityList.add(list4);
optionsPickerView.setPicker(provinceList,cityList);
}
⚠️注意:想要弹出选择器不要忘记show();
3.全部代码
package com.example.android3_demo.picker;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.bigkoo.pickerview.view.TimePickerView;
import com.example.android3_demo.R;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
public class PickerViewActivity extends AppCompatActivity implements View.OnClickListener {
private Button bt_timer;
private TextView tv_time;
private Button bt_address;
private TextView tv_address;
private TimePickerView timePickerView;
private OptionsPickerView optionsPickerView;
private List<String> provinceList = new ArrayList<>();
private List<List<String>> cityList = new ArrayList<>();
private List<List<List<String>>> areaList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_picker_view);
initView();
initTimerPicker();
initAddressPicker();
}
private void initAddressPicker() {
optionsPickerView = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String province = provinceList.get(options1);//获取省份
String city = cityList.get(options1).get(options2);//获取该省份的城市
tv_address.setText(province+":"+city);
}
})
.setTitleText("选择城市")
.build();
provinceList.add("北京");
provinceList.add("天津");
provinceList.add("河北");
provinceList.add("山东");
ArrayList<String> list = new ArrayList<>();
list.add("丰台");
list.add("昌平");
list.add("通州");
list.add("大兴");
list.add("海淀");
ArrayList<String> list2 = new ArrayList<>();
list2.add("武清");
list2.add("西青");
list2.add("和平");
list2.add("河北");
list2.add("河西");
ArrayList<String> list3 = new ArrayList<>();
list3.add("沧州");
list3.add("邯郸");
list3.add("廊坊");
list3.add("邢台");
list3.add("保定");
ArrayList<String> list4 = new ArrayList<>();
list4.add("青岛");
list4.add("济南");
list4.add("淄博");
list4.add("潍坊");
cityList.add(list);
cityList.add(list2);
cityList.add(list3);
cityList.add(list4);
optionsPickerView.setPicker(provinceList,cityList);
}
private void initTimerPicker() {
Calendar startDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
Calendar selectDate = Calendar.getInstance();
startDate.set(1990,1,1);
endDate.set(2030,1,1);
timePickerView = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String string = format.format(date);
tv_time.setText(string);
}
})
.setCancelText("取消")//取消按钮
.setSubmitText("确定")//确定按钮
.setTitleText("选择日期")//中间标题
.setCancelColor(Color.BLUE)//取消文字颜色
.setSubmitColor(Color.BLUE)//确定文字颜色
.setTitleColor(Color.BLACK)//中间标题文字颜色
.setBgColor(Color.GRAY)//背景颜色
.setDividerColor(Color.YELLOW)//分割线颜色
.setTitleBgColor(Color.RED)//上面标题背景颜色
.setTextColorCenter(Color.WHITE)//设置选中的颜色
.setTextColorOut(Color.GREEN)//设置未选中的颜色
.setTitleSize(28)//设置标题文字大小
.setContentTextSize(40)//设置下面文字大小
.setOutSideCancelable(false)//点击外部是否取消显示,默认是取消
.setDate(selectDate)//设置选中的时间,不设置默认是系统当前时间
.setRangDate(startDate,endDate)//设置开始时间和结束时间,不设置有默认的时间
.isCyclic(true)//是否循环滚钉
.setType(new boolean[]{true,true,true,false,false,false})//设置显示年月日时分秒 默认只显示年月日,不显示时分秒
.setLabel("年","月","日","时","分","秒")//设置显示的样式
.isCenterLabel(false)//设置年月日 是否显示在中间,一般设置为false
.build();
}
private void initView() {
bt_timer = (Button) findViewById(R.id.bt_timer);
tv_time = (TextView) findViewById(R.id.tv_time);
bt_address = (Button) findViewById(R.id.bt_address);
tv_address = (TextView) findViewById(R.id.tv_address);
bt_timer.setOnClickListener(this);
bt_address.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_timer:
timePickerView.show();
break;
case R.id.bt_address:
optionsPickerView.show();
break;
}
}
}