DatePicker、TimePicker

==>

DatePicker,用于选择日期

TimePicker,用于选择时间

两者均派生与FrameLayout,两者在FrameLayout的基础上提供了一些方法来获取用户所选日期、时间;

程序中如果需要获取用户选择的日期、时间,可通过添加DataPicker添加OnDataChangeListener进行监听,为TimePicker添加OnTimeChangeListener进行监听。

实例——略

进度条==》 ProgressBar、标题进度条

ProgressBar——进度条  

Android支持的进度跳风格,可通过设置style属性设定风格。

该属性支持的风格如下:

@android.style/Widget.ProgressBar.Horizontal——水平进度条;

@android.style/Widget.ProgressBar.Inverse——不断跳跃、旋转画面的进度条;

@android.style/Widget.ProgressBar.Large——大进度条;

@android.style/Widget.ProgressBar.Large.Invser——不断跳跃、旋转画面的大进度条;

@android.style/Widget.ProgressBar.Small——小进度条;

@android.style/Widget.ProgressBar.Small.Invser——不断跳跃、旋转画面的小进度条;

除此之外ProgressBar支持的其他XML属性==>

android:max 设置进度条的最大值
android:progress 设置进度条已完成的进度值
android:progressDrawable   设置进度条的轨道绘制形式
android:progressBarstyle   默认进度条样式
android:progressBarStyleHorizontal 水平进度条样式
android:progressBarStyleLarge 大进度条样式
android:progressBarStyleSmall 小进度条样式

android:progressDrawable,用于指定进度条的轨道绘制形式,该属性可指定为一个LayerDrawable(该对象通过在XML文件中<layer-list元素进行配置>)对象的引用。

ProgressBar提供如下方法操作进度==>

  setProgress(int):设置进度条完成百分比;

  incrementProgressBy(int):设置进度条的进度增加或减少——参数为正-增加,为负-减少;

实例一==>

布局文件==》
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <TextView
android:id="@+id/tvValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="执行进度" /> <!-- 定义一个水平进度条 --> <ProgressBar
android:id="@+id/bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100" />
<!-- 定义一个水平进度条,并改变轨道外观 --> <ProgressBar
android:id="@+id/bar2"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="300"
android:progressDrawable="@drawable/ucbar" /> </LinearLayout> 资源文件==》
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 定义轨道背景 -->
<item
android:id="@android:id/background"
android:drawable="@drawable/no"/>
<!-- 定义轨道已完成部分样式 -->
<item
android:id="@android:id/progress"
android:drawable="@drawable/ok"/> </layer-list>

注意:以上资源文件需要添加的位置如下:

代码实现==》

package com.example.myprogressbar;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.ProgressBar;
import android.widget.TextView; @SuppressLint("HandlerLeak")
public class MainActivity extends Activity
{
int hasData = 0;
int mProgressBarStatus = 0;
TextView tv; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv = (TextView) this.findViewById(R.id.tvValue);
final ProgressBar bar1 = (ProgressBar) this.findViewById(R.id.bar);
final ProgressBar bar2 = (ProgressBar) this.findViewById(R.id.bar2);
// 用于更新进度
final Handler hanler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// 标识该消息是由该程序发送的
if (msg.what == 1)
{
bar1.setProgress(mProgressBarStatus);
bar2.setProgress(mProgressBarStatus);
tv.setText(Integer.toString(hasData));
Log.i("swg", (String) tv.getText());
}
}
}; // 启动线程执行任务
new Thread()
{
public void run()
{
while (mProgressBarStatus < 300)
{
mProgressBarStatus = doWork();
Message msg = new Message();
msg.what = 1;
hanler.sendMessage(msg);
}
}
}.start();
} private int doWork()
{
hasData++;
try
{
Thread.sleep(100);
} catch (InterruptedException e)
{
e.printStackTrace();
}
return hasData;
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

运行效果如下图所示:

标题进度条实现方式

==》

布局文件==》
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <Button
android:id="@+id/btnDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示" /> <Button
android:id="@+id/btnHide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="隐藏" /> </LinearLayout> 代码实现==》
package com.example.mytitlebar; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button; public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 设置窗口特性,启用显示进度的进度条
requestWindowFeature(Window.FEATURE_PROGRESS);
// 设置窗口特性,启用不显示进度的进度条
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main); Button btnDisplay = (Button) this.findViewById(R.id.btnDisplay);
Button btnHide = (Button) this.findViewById(R.id.btnHide); btnDisplay.setOnClickListener(new ButtonOnClickLintener());
btnHide.setOnClickListener(new ButtonOnClickLintener());
} private class ButtonOnClickLintener implements OnClickListener
{ @Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btnDisplay:
// 显示不带进度的进度条
setProgressBarIndeterminateVisibility(true);
// 显示带进度的进度条
setProgressBarVisibility(true);
// 设置进度条的进度
setProgress(500);
break;
case R.id.btnHide:
// 隐藏不带进度的进度条
setProgressBarIndeterminateVisibility(false);
// 隐藏带进度的进度条
setProgressBarVisibility(false);
break;
}
}
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

android学习笔记七——控件(DatePicker、TimePicker、ProgressBar)的更多相关文章

  1. [Android学习笔记]组合控件的使用

    组合控件的使用 开发过程中,多个UI控件需要协同工作,相互交互之后,才可完成一个完整的业务需求,此时可把这些控件封装成为一个整体,相互之间的交互逻辑封装其中,外部调用可无需关心内部逻辑,只需获取处理后 ...

  2. Android学习笔记_11_ListView控件使用

    一.界面设计: 1.activity_main.xml文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  3. 十三、Android学习笔记_Andorid控件样式汇总

    <!-- 设置activity为透明 --> <style name="translucent"> <item name="android: ...

  4. Android学习笔记_75_Andorid控件样式汇总

    <!-- 设置activity为透明 --> <style name="translucent"> <item name="android: ...

  5. Android学习笔记_57_ExpandableListView控件应用

    1.布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...

  6. 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker

    [源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...

  7. android菜鸟学习笔记12----Android控件(一) 几个常用的简单控件

    主要参考<第一行代码> 1.TextView: 功能与传统的桌面应用开发中的Label控件相似,用于显示文本信息 如: <TextView android:layout_width= ...

  8. android菜鸟学习笔记14----Android控件(三) ListView的简单使用

    MVC模式: MVC的基本原理就是通过Controller连接View和Model.当View中所显示的数据发生变化时,会通知Controller,然后由Controller调用Model中的相关方法 ...

  9. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例

    有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...

随机推荐

  1. hdu 2665 Kth number

    划分树 /* HDU 2665 Kth number 划分树 */ #include<stdio.h> #include<iostream> #include<strin ...

  2. android WebView交互优化

    安卓的WebView一般是嵌套在activity或者fragment中的,但是如果在这种activity页面上点击返回按钮,一般会finish掉当前activity.其实是应该关闭当前的WebView ...

  3. [转载]在Android C/C++层添加LOG调试

    原文地址:C/C++层添加LOG调试">在Android C/C++层添加LOG调试作者:谢轩昂 在Android C/C++层添加LOG调试,并且在Logcat中输出的方法 第一步: ...

  4. 常用tcode

    SAP常用TCODE 1 MMBE 查询库存 2 CO01 生产订单创建 3 ME2N-按采购订单编号 ME2B/ME2M/ME2C/ME2W 采购订单查询 清单范围ALV 4 MB51 物料凭证清单 ...

  5. MACOS,LINUX,IOS上可用的毫秒级精度时间获取

    二话不说,先上代码 void outputCurrentTime(uint32_t seq,const char* type){ struct timeval t_curr; gettimeofday ...

  6. ASP.NET Web API与Rest web api:发布到IIS(二)(同发布.NET webservice)

    本文档大部分来源于:http://www.cnblogs.com/zqzjs/p/4705994.html 工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1 ...

  7. 解决LinearLayout中控件不能居右对齐

    转载自:http://lgb168.blog.163.com/blog/static/49674438201172492935235/ 2011-08-24 21:35:25|  分类: Androi ...

  8. 黑马程序员——JAVA基础之构造函数,构造代码块

    ------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1.  函数名与类名相同 2.  不用定义返回值类型 3.  不可以写return语句 构造函数 ...

  9. (转) Reinforcement Learning for Profit

    Reinforcement Learning for Profit July 17, 2016 Is RL being used in revenue generating systems today ...

  10. Java Warmup

    http://www.brendangregg.com/blog/2016-09-28/java-warmup.html