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

先放效果图:

 界面就这么简单。



然后放上代码:

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跟数据绑定在一起,就不多解释了。还有布局太简单,也不用贴出来了吧。大体就这样

Android使用NumberPicker控件实现选择城市,生日的更多相关文章

  1. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  2. 【转】Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用

    Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用 分类: Android UI ...

  3. 【转】Android M新控件之FloatingActionButton,TextInputLayout,Snackbar,TabLayout的使用

    Android M新控件之FloatingActionButton,TextInputLayout,Snackbar,TabLayout的使用 分类: Android UI2015-06-15 16: ...

  4. 【风马一族_Android】第4章Android常用基本控件

    第4章Android常用基本控件 控件是Android用户界面中的一个个组成元素,在介绍它们之前,读者必须了解所有控件的父类View(视图),它好比一个盛放控件的容器. 4.1View类概述 对于一个 ...

  5. 【ALearning】第三章 Android基本常见控件

    本章主要介绍主要的寻常较多使用的控件,包含TextView.EditView.ImageView.Button等.本章将介绍相关控件基本属性的使用,为以后章节的进阶学习提供基础.案例中引用的Linea ...

  6. [开源]在iOS上实现Android风格的控件Toast

    [开源]在iOS上实现Android风格的控件Toast iOS的风格和Apple其他产品一样,简单而粗暴.没有给人其他选择的余地,让你又爱又恨.同样的,Apple对待iOS平台的开发人员和对待大众消 ...

  7. [置顶] Android常用适配器控件

    Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...

  8. Android 一个日历控件的实现代码

    转载  2017-05-19   作者:Othershe   我要评论 本篇文章主要介绍了Android 一个日历控件的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看 ...

  9. Android 自己定义控件开发入门(二)

    上一次我们讲了一堆实现自己定义控件的理论基础.列举了View类一些能够重写的方法,我们对这些方法的重写是我们继承View类来派生自己定义控件的关键 我通过一个最简单的样例给大家展示了这一个过程,不管是 ...

随机推荐

  1. react-native使用react-art制作SVG动画

    想要使用SVG做一个动画,郁闷了一上午终于有了一点思路.. 其实我是看了一篇国外的文章.网址:http://browniefed.com/blog/2015/05/03/getting-react-a ...

  2. Web 1三级联动 下拉框 2添加修改删除 弹框

    Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...

  3. 13年山东省赛 The number of steps(概率dp水题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud The number of steps Time Limit: 1 Sec  Me ...

  4. [转]PictureEx.h和PictureEx.cpp源文件

    要显示一个gif,网上找了个,子类化了MFCl图片控件,用着方便,记一下 转自:http://www.bccn.net/Article/net/vcnet/jszl/200709/6386.html ...

  5. Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  6. 【译】JavaScript 开发者年度调查报告

    截至目前有超过了 5000 人参与了(该次调查),准确的说是 5350 人.我迫不及待的想要和大家分享一下这次调查的细节.在分享之前我想要感谢参与调查的每一个人.这是 JavaScript 社区一个伟 ...

  7. [汇编语言]-第十章 ret,retf,call指令

    1- ret 相当于 pop IP;用栈中数据,修改IP内容.从而实现近转移. 执行后(IP)=0, CS:IP指向代码段的第一条指令. assume cs:code stack segment db ...

  8. WPF笔记(1.1 WPF基础)——Hello,WPF!

    原文:WPF笔记(1.1 WPF基础)--Hello,WPF! Example 1-1. Minimal C# WPF application// MyApp.csusing System;using ...

  9. PL/SQL --> 动态SQL调用包中函数或过程

    动态SQL主要是用于针对不同的条件或查询任务来生成不同的SQL语句.最常用的方法是直接使用EXECUTE IMMEDIATE来执行动态SQL语句字符串或字符串变量.但是对于系统自定义的包或用户自定的包 ...

  10. shell重定向

    输入重定向 和输出重定向一样,Unix 命令也可以从文件获取输入,语法为: command < file 这样,本来需要从键盘获取输入的命令会转移到文件读取内容. 注意:输出重定向是大于号(&g ...