android选择城市控件,Android使用NumberPicker控件实现选择城市,生日

本人菜鸟一枚,第一次写技术博客,有点小紧张,加上代码很乱,求不喷。

先放效果图:

界面就这么简单。

07895e1b886ddb141de326e927fcc9ba.png

0a2ee5abbc4b7fed39506580b8947cd7.png

然后放上代码:

package com.example.dialog;

import java.util.ArrayList;

import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.app.Dialog;

import android.content.Context;

import android.content.DialogInterface;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.NumberPicker;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.NumberPicker.OnValueChangeListener;

public class MainActivity extends Activity {

public Context context = MainActivity.this;

String msg = "test";

// numberpicker1 简单的NumberPicker的操作

private NumberPicker numberpicker1;

// numberpicker2,numberpicker3是星座month和day

private NumberPicker numberpicker2;

private NumberPicker numberpicker3;

private NumberPicker np;

private TextView text;

private TextView text1;

private int num;

int month =1;

int day =1;

String cityy;

private String[] city= {"北京","上海","广州","深圳","成都","天津"};

private Button bt1;

private Button bt2;

private Builder dialog;

private Builder dialog2;

private TextView tv1;

private TextView tv2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

bt1 =(Button) findViewById(R.id.bt1);

tv1 = (TextView) findViewById(R.id.tv1);

bt2 =(Button) findViewById(R.id.bt2);

tv2 = (TextView) findViewById(R.id.tv2);

bt1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

dialog = createLoadingDialog(MainActivity.this, "test");

dialog.create().show();

}

});

bt2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

cityy ="北京";

dialog2 = createLoadingDialog2(MainActivity.this, "test");

dialog2.create().show();

}

});

}

/**

* 得到自定义的progressDialog

*

* @param context

* @param msg

* @return

*/

public Builder createLoadingDialog(Context context, String msg) {

LayoutInflater inflater = LayoutInflater.from(context);

View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view

numberpicker2 = (NumberPicker) v.findViewById(R.id.numberpicker2);

numberpicker2.setMaxValue(12);

numberpicker2.setMinValue(1);

numberpicker2.setValue(month);

numberpicker2.setFocusable(true);

numberpicker2.setFocusableInTouchMode(true);

numberpicker2.setOnValueChangedListener(monthChangedListener);

/*

* / setMaxValue根据每月的天数不一样,使用switch()进行分别判断

*/

numberpicker3 = (NumberPicker) v.findViewById(R.id.numberpicker3);

numberpicker3.setMinValue(1);

numberpicker3.setMaxValue(31);

numberpicker3.setValue(day);

numberpicker3.setFocusable(true);

numberpicker3.setFocusableInTouchMode(true);

numberpicker3.setOnValueChangedListener(dayChangedListener);

text1 = (TextView) v.findViewById(R.id.textxing);

AlertDialog.Builder loadingDialog = new AlertDialog.Builder(context);

loadingDialog.setMessage("生日");

loadingDialog.setView(v);

loadingDialog.setCancelable(false);// 不可以用“返回键”取消

loadingDialog.setPositiveButton("确定",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

tv1.setText(month + "月" + day + "日" +"\t" + text1.getText().toString());

}

});

loadingDialog.setNegativeButton("取消",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

}

});

return loadingDialog;

}

public Builder createLoadingDialog2(Context context, String msg) {

LayoutInflater inflater = LayoutInflater.from(context);

View v = inflater.inflate(R.layout.loading_dialog2, null);// 得到加载view

np = (NumberPicker) v.findViewById(R.id.numberpicker22);

np.setDisplayedValues(city);

np.setMinValue(0);

np.setMaxValue(city.length - 1);

np.setOnValueChangedListener(cityChangedListener);

AlertDialog.Builder loadingDialog = new AlertDialog.Builder(context);

loadingDialog.setMessage("城市");

loadingDialog.setView(v);

loadingDialog.setCancelable(false);// 不可以用“返回键”取消

loadingDialog.setPositiveButton("确定",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

tv2.setText(cityy);

}

});

loadingDialog.setNegativeButton("取消",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

cityy = city[0];

}

});

return loadingDialog;

}

private NumberPicker.OnValueChangeListener monthChangedListener = new OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker arg0, int arg1, int arg2) {

// TODO Auto-generated method stub

month = numberpicker2.getValue();

xingzuo();

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

numberpicker3.setMaxValue(31);

break;

case 2:

numberpicker3.setMaxValue(29);

break;

case 4:

case 6:

case 9:

case 11:

numberpicker3.setMaxValue(30);

break;

default:

break;

}

}

};

private NumberPicker.OnValueChangeListener dayChangedListener = new OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker arg0, int arg1, int arg2) {

// TODO Auto-generated method stub

day = numberpicker3.getValue();

xingzuo();

}

};

private NumberPicker.OnValueChangeListener cityChangedListener = new OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker arg0, int arg1, int arg2) {

//获得城市名

String [] a = np.getDisplayedValues();

cityy = a[arg2];

}

};

// 对获得的month 和 day 进行处理

void xingzuo() {

if ((month == 1 && day > 19) || (month == 2 && day < 19)) {

text1.setText("水瓶座");

} else if ((month == 2 && day > 18) || (month == 3 && day < 21)) {

text1.setText("双鱼座");

} else if ((month == 3 && day > 20) || (month == 4 && day < 20)) {

text1.setText("白羊座");

} else if ((month == 4 && day > 19) || (month == 5 && day < 21)) {

text1.setText("金牛座");

} else if ((month == 5 && day > 20) || (month == 6 && day < 22)) {

text1.setText("双子座");

} else if ((month == 6 && day > 21) || (month == 7 && day < 23)) {

text1.setText("巨蟹座");

} else if ((month == 7 && day > 22) || (month == 8 && day < 23)) {

text1.setText("狮子座");

} else if ((month == 8 && day > 22) || (month == 9 && day < 23)) {

text1.setText("处女座");

} else if ((month == 9 && day > 22) || (month == 10 && day < 24)) {

text1.setText("天秤座");

} else if ((month == 10 && day > 23) || (month == 11 && day < 23)) {

text1.setText("天蝎座");

} else if ((month == 11 && day > 22) || (month == 12 && day < 22)) {

text1.setText("射手座");

} else if ((month == 12 && day > 21) || (month == 1 && day < 20)) {

text1.setText("摩羯座");

}

}

}

代码很简单,主要是把NumberPicker跟数据绑定在一起,就不多解释了。还有布局太简单,也不用贴出来了吧。大体就这样

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值