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;
        }
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个高仿 IOS PickerView 控件的库。代码来自:https://github.com/saiwu-bigkoo/Android-PickerView ,在原有代码基础上进行封装,并提供了一些修改属性方法。后期如有时间,将会对原有代码进行优化。预览使用首先需要在 build.gradle 文件中添加依赖:dependencies {    compile 'com.airsaid.library:pickerviewlibrary:1.0.0' }添加好依赖后,重新同步工程。可根据需求使用如下选择器:城市选择:        CityPickerView mCityPickerView = new CityPickerView(this);         // 设置点击外部是否消失 //        mCityPickerView.setCancelable(true);         // 设置滚轮字体大小 //        mCityPickerView.setTextSize(18f);         // 设置标题 //        mCityPickerView.setTitle("我是标题");         // 设置取消文字 //        mCityPickerView.setCancelText("我是取消文字");         // 设置取消文字颜色 //        mCityPickerView.setCancelTextColor(Color.GRAY);         // 设置取消文字大小 //        mCityPickerView.setCancelTextSize(14f);         // 设置确定文字 //        mCityPickerView.setSubmitText("我是确定文字");         // 设置确定文字颜色 //        mCityPickerView.setSubmitTextColor(Color.BLACK);         // 设置确定文字大小 //        mCityPickerView.setSubmitTextSize(14f);         // 设置头部背景 //        mCityPickerView.setHeadBackgroundColor(Color.RED);         mCityPickerView.setOnCitySelectListener(new CityPickerView.OnCitySelectListener() {             @Override             public void onCitySelect(String str) {                 Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();             }         });         mCityPickerView.show();时间选择: //     TimePickerView 同样有上面设置样式的方法         TimePickerView mTimePickerView = new TimePickerView(this, TimePickerView.Type.YEAR_MONTH_DAY);         // 设置是否循环 //        mTimePickerView.setCyclic(true);         // 设置滚轮文字大小 //        mTimePickerView.setTextSize(TimePickerView.TextSize.SMALL);         // 设置时间可选范围(结合 setTime 方法使用,必须在) //        Calendar calendar = Calendar.getInstance(); //        mTimePickerView.setRange(calendar.get(Calendar.YEAR) - 100, calendar.get(Calendar.YEAR));         // 设置选中时间 //        mTimePickerView.setTime(new Date());         mTimePickerView.setOnTimeSelectListener(new TimePickerView.OnTimeSelectListener() {             @Override             public void onTimeSelect(Date date) {                 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);                 Toast.makeText(MainActivity.this, format.format(date), Toast.LENGTH_SHORT).show();             }         });         mTimePickerView.show();选项选择:        OptionsPickerView<String> mOptionsPickerView = new OptionsPickerView<>(this);         final ArrayList<String> list = new ArrayList<>();         list.add("男");         list.add("女");         // 设置数据         mOptionsPickerView.setPicker(list);         // 设置选项单位 //        mOptionsPickerView.setLabels("性");         mOptionsPickerView.setOnOptionsSelectListener(new OptionsPickerView.OnOptionsSelectListener() {             @Override             public void onOptionsSelect(int option1, int option2, int option3) {                 String sex = list.get(option1);                 Toast.makeText(MainActivity.this, sex, Toast.LENGTH_SHORT).show();             }         });         mOptionsPickerView.show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值