学习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. 词频统计(WEB版)

    通过点击浏览按钮输入文件: 点击查询按钮后返回结果: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" ...

  2. PHP里用户密码的回复和管理

    1). In /etc/my.ini, add skip-grant-tables 2). mysql -u root -p            (no password required) mys ...

  3. Nginx 报错: nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) 的解决方法

    今天测试域名访问不了,登陆 Linux(Ubuntu)重启Nginx: nginx -s reload 结果报错: nginx: [error] open() : No such file or di ...

  4. ThinkPHP 3.2.2 实现持久登录 ( 记住我 )

    实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录 ...

  5. GitHub超详细图文攻略

    GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...

  6. ecshop运行超过30秒超时的限制解决办法

    ecshop运行超过30秒超时的限制解决办法 ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-06-04 ecshop运行超过服务器默认的设置30秒的限制时会 ...

  7. ContentType Office

    Office对应ContentType 当从浏览器返回一个文件时,需要指定ContentType,以下是Office2007对应的值: "application/vnd.openxmlfor ...

  8. GenderGuesser

    http://www.hackerfactor.com/GenderGuesser.php#Analyze

  9. Java中的匿名对象

    匿名对象就是没有明确给出名字的对象.一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用. 一个普通的常量字符串就可以表示一个匿名String对象. 比如可以 int len ...

  10. Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误

    错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/S ...