学习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. hdu Turn the corner

    这题是道三分的题,首先要分析满足条件的情况,这个就是平面几何的功夫了.要想车子能够转弯成功,最上面那个点到水平线的距离要小于等于y.这里h和s的公式就是利用平面几何的知识求出来的:s=l*cos(a) ...

  2. Hadoop配置文件解析

    Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介    Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...

  3. [GE]手动截取当前活动窗口,并且按规则命名(1/2)

    Function Take-ScreenShot { <# .SYNOPSIS Used to take a screenshot of the desktop or the active wi ...

  4. 插入随机数到MySQL数据库

    我们经常会遇到使用随机的问题,下面就是一种解决随机数的方法. 在构造测试数据时,我们需要对测试表插入随机数据.构造测试数据的方法如下,仅以update为例说明 步骤1:随机数的SQL函数为rand() ...

  5. maven中GroupID 和ArtifactID怎么写

    groupId :the unique identifier of the organization or group that created the project artifactId :uni ...

  6. [收藏] 关于解决“进程com.android.phone意外停止”的方法 (未尝试)

    很多机油反应有这个情况,本人费劲九牛20虎之力终于克服之,这个现象一般出现在刚刷完系统会出现,甚至你怎么刷ROM这个现象依旧存在(崩溃不?)~~~有位机油刷了这个系统也出现了http://samsun ...

  7. 四 mybatis开发dao的方法

    mybatis开发dao的方法 1.1     SqlSession使用范围 1.1.1     SqlSessionFactoryBuilder //以流的方式读取总的配置文件 Reader rea ...

  8. 利用js轻松实现页面简繁体转换

    使用方法:StranBody(); //转换对象,使用递归,逐层剥到文本 function StranBody(fobj) { if(typeof(fobj)=="object") ...

  9. Bootstrap 进度条媒体对象和 Well 组件

    一.Well 组件 这个组件可以实现简单的嵌入效果. //嵌入效果 <div class="well"> Bootstrap </div> //有 lg 和 ...

  10. In App Purchase

    参考文章1,参考文章2,参考文章3, 参考文章3 一.Product 分类:      Consumables: 应该在应用里被消费掉的.(Coupon, 生命数)      Non-Consumab ...