学习Android半年了,一直想写点东西,今天开始写第一篇,目前在弄的一个小项目,是关于课程表智能闹钟,今天做这个TimePickerDialog查了很多资料,做成了下面这个效果,

这里timepicker用的是github一个自定义控件 
https://github.com/jingchenUSTC/TimePicker

先上布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="50dp"
android:gravity="center"> <LinearLayout android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"> <LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"> <autoalarm.keygod.com.view.PickerView
android:id="@+id/hour"
android:layout_width="100dp"
android:layout_height="80dp"
android:layout_weight=""/> <TextView
android:layout_width="wrap_content" android:layout_height="match_parent"
android:layout_centerVertical="true" android:gravity="center"
android:text=" : "
android:textColor="#ffaa33"
android:textSize="30sp"
android:textStyle="bold"
/> <autoalarm.keygod.com.view.PickerView
android:id="@+id/minute"
android:layout_width="100dp"
android:layout_height="80dp"
android:layout_weight=""
/>
</LinearLayout>
<LinearLayout
android:gravity="center"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"> <Button android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="@string/queren"
android:id="@+id/tp_queren"/> <Button
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="@string/quxiao"
android:id="@+id/tp_quxiao"/>
</LinearLayout>
</LinearLayout>

最后是Activity中的点击事件

public class MyTimePickerDialog extends Dialog {

Context context;
PickerView hour_pv, minute_pv;
List<String> hour = new ArrayList<String>();
List<String> minute = new ArrayList<String>();
Button tp_queren, tp_quxiao;
public static String hourText ="";
public static String minuteText = "";
DialogOnClickListener dialogOnClickListener;
Dialog dialog; public MyTimePickerDialog(Context context) {
super(context);
this.context = context;
dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.timepickerdialog);
hour_pv = (PickerView) dialog.findViewById(R.id.hour);
minute_pv = (PickerView) dialog.findViewById(R.id.minute);
tp_queren = (Button) dialog.findViewById(R.id.tp_queren);
tp_quxiao = (Button) dialog.findViewById(R.id.tp_quxiao);
//设置自定义timepicker的数据
for (int i = ; i < ; i++) {
hour.add("" + i);
}
for (int i1 = ; i1 < ; i1++) {
hour.add(Integer.toString(i1));
}
for (int i = ; i < ; i++) {
minute.add(i < ? "" + i : "" + i);
} hour_pv.setData(hour); minute_pv.setData(minute); hour_pv.setOnSelectListener(new PickerView.onSelectListener() {
@Override
public void onSelect(String text) {
hourText = text;
}
});
minute_pv.setOnSelectListener(new PickerView.onSelectListener() {
@Override
public void onSelect(String text) {
minuteText = text;
}
});
/*
*设置按钮点击事件
*/
tp_queren.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogOnClickListener.confirmedDo(hourText, minuteText);
dismiss();
}
});
tp_quxiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
}); }
//按钮点击事件接口,用于在activity中完成功能,传入的是timepicker的hour和minute
public interface DialogOnClickListener {
public void confirmedDo(String hourText,String minuteText); } public void setDialogOnClickListener(DialogOnClickListener dialogOnClickListener){
this.dialogOnClickListener = dialogOnClickListener;
}
//以下是一些常用方法
public String getHourText(){
return hourText; } public String getMinuteText(){
return minuteText;
}
public void show() {
dialog.show();
}
public void hide(){
dialog.hide();
}
public void dismiss(){
dialog.dismiss();
}
}

最后是Activity中的点击事件

confirmButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyTimePickerDialog myDialog = new MyTimePickerDialog(TimePickerActicity.this); myDialog.setDialogOnClickListener(new MyTimePickerDialog.DialogOnClickListener() {
@Override
public void confirmedDo(String hourText, String minuteText) {
timeEndList.get(index).setText(""+hourText+" : "+minuteText+"");
TimeModel t = new TimeModel(hourText,minuteText);
timeEnds.set(index, t);
isOpened[index+] = "";
}
});
myDialog.show();
}
});
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">#FFF</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
</resources>

参考文章:http://www.jb51.net/article/32030.htm

Android 自定义TimePickerDialog的更多相关文章

  1. android 自定义动画

    android自定义动画注意是继承Animation,重写里面的initialize和applyTransformation,在initialize方法做一些初始化的工作,在applyTransfor ...

  2. Android自定义View 画弧形,文字,并增加动画效果

    一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类   B ...

  3. Android自定义View4——统计图View

    1.介绍 周末在逛慕课网的时候,看到了一张学习计划报告图,详细记录了自己一周的学习情况,天天都是0节课啊!正好在学习Android自定义View,于是就想着自己去写了一个,这里先给出一张慕课网的图,和 ...

  4. (转)[原] Android 自定义View 密码框 例子

    遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...

  5. Android 自定义View合集

    自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...

  6. Android 自定义View (五)——实践

    前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...

  7. Android 自定义 view(四)—— onMeasure 方法理解

    前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...

  8. Android 自定义 view(三)—— onDraw 方法理解

    前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view<Android 自定义view(二) -- attr 使用>,那么接下来我们继续深究自定义view,下一步将要去简单理解自 ...

  9. Android 自定义view(二) —— attr 使用

    前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...

随机推荐

  1. 未能找到Microsoft.Office.Core.MsoTriState的引用

    1.首先似乎没有找到这个引用,然后根据网上的教程,添加了Microsoft Office 12.0 Library,根据对象浏览器,查看此dll,有core,也有 MsoTriState也有,编译的时 ...

  2. 【iHMI43真彩液晶模块】发布新版 DEMO 软件包,版本号为 0.14

    新版DEMO软件包主要在以下几个方面进行了改进: 1.改进触摸算法,使用链表注册模式:注册触摸按键后:用户只需要处理事件(event)就行了,其他都由系统完成: 2.改进systick 和 usart ...

  3. pajax

    pjax网址:https://libraries.io/bower/yii2-pjax 1. 连接指定的div,实行pjax ,利用 linkSelector 方法<div id="c ...

  4. CSS权威指南 - 浮动和定位 1

    定位 定位的想法很简单元素框相对于正常位置出现在哪里. 定位:static,相对, 绝对, fixed, 继承 static就是默认的位置 相对就是相对于默认位置的偏移.原来的static定位位置依然 ...

  5. php 去除html标记--strip_tags与htmlspecialchars的区别详解

    php 去除html标记--strip_tags与htmlspecialchars的区别详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-26   本篇文章是对php中去除html ...

  6. 为什么我的联想打印机M7450F换完墨粉之后打印机显示请更换墨粉盒?这是我的墨盒第一次灌粉·、

    需要打印机清零,可以网上查到的,要不就去买颗芯片换上关掉机器 →开机的同时按住功能按扭不松手开机→进入维修模式→翻到84功能项→按OK→用下翻键找到PROCESS CHECK→按OK 按扭→关机→正常 ...

  7. PHP pear安装

    PHP pear安装 Posted on 2012-07-06 10:19 bug yang 阅读(5787) 评论(0) 编辑 收藏 转自:http://wangye.org/blog/archiv ...

  8. ADO 事务

    Ado.Net事务处理.在ADO.NET 中,可以使用Connection 和Transaction 对象来控制事务.若要执行事务,请执行下列操作:• 调用Connection 对象的BeginTra ...

  9. MyCAT安装指南

    MyCAT安装指南 MyCAT 1.2版本 快速上手-安装指南(安装单机) Mycat的server和mysql位于同一台服务器,centos6.2.4环境 Mycat:10.191.116.175 ...

  10. Andrew Ng机器学习公开课笔记–Reinforcement Learning and Control

    网易公开课,第16课 notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么 但某些sequential decision making问题,比 ...