学习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. currentRowChanged 的注意事项

    Qt中的表单控件QListWidget类提供了许多信号函数,可以和用户交互,其中有个currentRowChanged ( int currentRow ) 是检测当前选中行是否发生了改变,如果改变了 ...

  2. MS14-025引起的问题 - 2

    5月,微软在13日发布月度安全更新,其中 有KB2871997和 KB2928120两个知识库文章Knowledgeased(而KB2871997甚至不是Security Bulletin).对于无论 ...

  3. Android消息处理机制

    Android消息处理机制 Android应用程序消息处理机制(深入到native,实际由管道实现-pipe&epoll)

  4. 18. 求交错序列前N项和

    求交错序列前N项和 #include <stdio.h> int main() { int numerator, denominator, flag, i, n; double item, ...

  5. python twisted启动定时服务

    以下是python脚本send_mms.py #############################################!/usr/bin/python# -*- coding: ut ...

  6. sqrt函数实现

    感谢杨工,让我更加认识到自己技术薄弱,这道题源自于和杨工的非正式面试,当时根本没思路,甚至没和查找有丝毫的联系,看来做自己想做的还是要付出努力的.sqrt()即开平方运算,y=x*x,已知Y的情况下求 ...

  7. JQ+rotate插件实现图片旋转,兼容IE7+ \ CHROME等浏览器

    插件:/jquery.rotate.min.js CODE: <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  8. Bootstrap页面布局1 - 下载BS(bootstrap简称)

    1.bootstrap 官方网站:http://wrongwaycn.github.io/bootstrap/docs/index.html 2.如图: 3.下载后得到如下目录结构 bootstrap ...

  9. subclipse安装后从svn资源库视图check out的资源无法创建server

    不要从根目录下check out,只要把根目录下所需要的项目check out即可.

  10. 图片lightbox2

    1. 官网下载 http://lokeshdhakar.com/projects/lightbox2/ 2.引入 css  jquery  js 3. HTML格式 <a href=" ...