以下是小编帮大家整理的Android学习笔记(九)――更复杂的进度对话框,本文共7篇,仅供参考,大家一起来看看吧。

篇1:Android学习笔记(九)――更复杂的进度对话框
显示操作进度的对话框
1、使用上一篇创建的同一项目,在activity_main.xml文件中添加一个Button:
2、在MainActivity.java文件中添加具体的进度条实现代码:
首先添加onClick3方法:
public void onClick3(View v) {
showDialog(1);// id为1,在调用回调方法onCreateDialog()时,将id传进去,使其选择case 1情况,
progressDialog.setProgress(0);// 从0开始
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 1; i <= 10; i++) {
try {
Thread.sleep(1000);
progressDialog.incrementProgressBy(100 / 10);// 步进为10
} catch (InterruptedException e) {
// TODO: handle exception
e.printStackTrace();
}
}
progressDialog.dismiss();// 销毁对话框
}
}).start();
}
再在onCreateDialog()回调方法中添加id=1时的代码(即实现显示操作进度对话框的代码):
case 1:
progressDialog = new ProgressDialog(this);
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setTitle(“Downloading files...”);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置进度条样式
progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, “OK”,// 设置OK按钮
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), “OK clicked!”,
Toast.LENGTH_SHORT).show();
}
});
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, “Cancel”,// 设置取消按钮
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), “Cancel clicked!”,
Toast.LENGTH_SHORT).show();
}
});
return progressDialog;
3、运行一下,效果如下:
篇2:Android常用的五种弹出对话框
一个Android开发中常用对话框的小例子,共有五种对话框:普通弹出对话框,单选对话框,多选对话框,输入对话框及进度条样式对话框:
xmlns:tools=“schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical” >
android:id=“@+id/common_dialog”
android:layout_width=“match_parent”
android:layout_height=“40dp”
android:text=“普通对话框”
android:textSize=“16sp”
android:layout_marginTop=“10dp” />
android:id=“@+id/radio_dialog”
android:layout_width=“match_parent”
android:layout_height=“40dp”
android:text=“单选对话框”
android:textSize=“16sp”
android:layout_marginTop=“10dp” />
android:id=“@+id/check_dialog”
android:layout_width=“match_parent”
android:layout_height=“40dp”
android:text=“多选对话框”
android:textSize=“16sp”
android:layout_marginTop=“10dp” />
android:id=“@+id/input_dialog”
android:layout_width=“match_parent”
android:layout_height=“40dp”
android:text=“输入文字对话框”
android:textSize=“16sp”
android:layout_marginTop=“10dp” />
android:id=“@+id/progress_dialog”
android:layout_width=“match_parent”
android:layout_height=“40dp”
android:text=“进度条对话框”
android:textSize=“16sp”
android:layout_marginTop=“10dp” />
下面是输入内容的简单布局activity_input.xml
xmlns:tools=“schemas.android.com/tools”
android:id=“@+id/LinearLayout1”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical” >
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“@string/hello_world” />
android:id=“@+id/uname”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content” />
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“@string/hello_world” />
android:id=“@+id/upass”
android:layout_width=“fill_parent”
android:layout_height=“wrap_content” />
代码及注释:
public class MainActivity extends Activity implements OnClickListener {
/**单选框模拟标题 大学*/
private final static int CHECKED_ENU = 0;
/**单选框模拟标题 高中*/
private final static int CHECKED_SEL = 1;
/**单选框模拟标题 初中*/
private final static int CHECKED_CHU = 2;
/**复选按钮状态为全选 */
private boolean[] checked = { true, true, true, false };
/**模拟的进度值 */
private int progressNumber;
/**进度对话框 */
private ProgressDialog progressDialog;
/**对应按钮*/
private Button commonBtn, radioBtn, checkBtn, inputBtn, progressBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initListeners();
}
/**初始化UI控件*/
private void initViews() {
this.commonBtn = (Button) findViewById(R.id.common_dialog);
this.radioBtn = (Button) findViewById(R.id.radio_dialog);
this.checkBtn = (Button) findViewById(R.id.check_dialog);
this.inputBtn = (Button) findViewById(R.id.input_dialog);
this.progressBtn = (Button) findViewById(R.id.progress_dialog);
}
/**注册按钮监听事件*/
private void initListeners() {
this.commonBtn.setOnClickListener(this);
this.radioBtn.setOnClickListener(this);
this.checkBtn.setOnClickListener(this);
this.inputBtn.setOnClickListener(this);
this.progressBtn.setOnClickListener(this);
}
/**普通对话框 */
private Dialog buildAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(“对话框”);
builder.setMessage(“您的密码不对!!”);
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.mm1);
/**设置背景图片*/
builder.setView(imageView);
/**左边按钮*/
builder.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击的是左边确定按钮!”);
}
});
/**中间按钮*/
builder.setNeutralButton(“详情”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击的是中间详情按钮!”);
}
});
/**右边按钮*/
builder.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
setTitle(“您点击的是右边取消按钮!”);
}
});
return builder.create();
}
/**单选按钮弹出框 */
private Dialog buildAlertDialog_radio() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(“对话框”);
/**单选按钮,默认高中被选中*/
builder.setSingleChoiceItems(new String[] { “大学”, “高中”, “初中”, “小学” }, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch (which) {
case CHECKED_ENU:
setTitle(“大学”);
break;
case CHECKED_SEL:
setTitle(“高中”);
break;
case CHECKED_CHU:
setTitle(“初中”);
break;
default:
setTitle(“小学”);
break;
}
}
});
builder.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击的是左边确定按钮!”);
}
});
builder.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击的是右边取消按钮!”);
}
});
return builder.create();
}
/**可以多选按钮弹出框 */
private Dialog buildAlertDialog_checkbox() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(“对话框”);
/**复选按钮*/
builder.setMultiChoiceItems(new String[] { “大学”, “高中”, “初中”, “小学” }, checked, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
setTitle(“which=” + which + “-----” + “isChecked=” + isChecked);
}
});
builder.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击了确定按钮!”);
}
});
builder.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
setTitle(“您点击的是了取消按钮!”);
}
});
return builder.create();
}
/**含可以输入文本的弹出框 */
private Dialog buildAlertDialog_input() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle(“对话框”);
LayoutInflater inflater = LayoutInflater.from(this);
builder.setView(inflater.inflate(R.layout.activity_input, null));
builder.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击的是确定按钮!”);
}
});
builder.setNegativeButton(“取消”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setTitle(“您点击的是取消按钮!”);
}
});
return builder.create();
}
/**进度对话框 */
private Dialog buildAlertDialog_progress() {
progressDialog = new ProgressDialog(this);
progressDialog.setTitle(“进度条”);
progressDialog.setMessage(“正在下载...........”);
/**进度条样式 */
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
/**模糊效果 */
progressDialog.setIndeterminate(false);
return progressDialog;
}
/**每隔0.3秒更新一次进度 */
public void updateProgress() {
new Thread() {
@Override
public void run() {
try {
while (progressNumber <= 100) {
progressDialog.setProgress(progressNumber++);
Thread.sleep(300);
super.run();
}
/**下载完后,关闭下载框 */
progressDialog.cancel();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.common_dialog:
buildAlertDialog().show();
break;
case R.id.radio_dialog:
buildAlertDialog_radio().show();
break;
case R.id.check_dialog:
buildAlertDialog_checkbox().show();
break;
case R.id.input_dialog:
buildAlertDialog_input().show();
break;
case R.id.progress_dialog:
buildAlertDialog_progress().show();
updateProgress();
break;
default:
break;
}
}
}
篇3:Android笔记:stackview
stackview相关范例:(附件)
参考资料:
1.sampleprogramz.com/android/stackview.php
2.stackoverflow.com/questions/9997753/how-to-create-custom-stackview-for-android-2-2-or-2-3
3.stackoverflow.com/questions/5544112/alternative-views-instead-of-stackviews-for-android-versions-lower-to-android-3
4.stackoverflow.com/questions/12286506/simulate-stack-view-in-android2api-5
本文出自 “天空没有痕迹但我飞过” 博客,请与作者联系!
篇4:android 时间对话框 TimePickerDialog详细介绍
个人在做提醒功能的时候用到了TimePickerDialog对话框,查阅了很多技术资料,但是感觉很多东西都说的不是很详细,并且很多地方,都有不完善的地方,比如有弹出对话框得到的不是系统当前的时间,而是一个其他时间的现象,让人很是苦闷,所以在经过几度研究之后,决定把个人对此空间的部分理解拿出来与大家讨论,如有不对之处,敬请谅解,会加以改进。
闲话不多说,直接进入主题:
首先,我们要在程序中声明一个日历的对象,并对其实例化获取日历实例,后面会用到。
private Calendar c = Calendar.getInstance;
实例化后便可以对该历对象进行操作了,如c.get方法可以获得该日历对象中的相关变量(如年、月、日、时、分、秒等),这些变量的值在实例化“c = Calendar.getInstance();”时已经被设置为系统默认时间;利用c.set方法可以对日历对象的相关变量进行设置。
日历对象还有一个重要的方法是setTimeInMillis,该方法只有一个参数,即距离1970年1月1日0时的毫秒数,调用这个方法,则会根据你传入的毫秒数对日历对象中的变量进行相应设置,如果想设置为当前的系统时间,则用以下方式:“c.setTimeInMillis(System.currentTimeMillis());”
下面进入主角,即时间对话框的开发。给出部分实现代码,具体的细节,自己潜心研究
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
e1 = (EditText) findViewById(R.id.c1_time);
e1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
c.setTimeInMillis(System.currentTimeMillis());
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinute = c.get(Calendar.MINUTE);
new TimePickerDialog(ClassTimeSet.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view,
int hourOfDay, int minute) {
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0); // 设为 0
c.set(Calendar.MILLISECOND, 0); // 设为 0
}
}, mHour, mMinute, true).show();
}
});
篇5:Android学习笔记总结初学者必看
第一步:
Android(1) - 在 Windows 下搭建 Android 开发环境,以及 Hello World 程序
搭建 Android 的开发环境,以及写一个简单的示例程序
在 Windows 下搭建 Android 开发环境 Android 项目的目录结构说明 写一个简单的 Hello World 程序
一、在 Windows 下搭建 Android 开发环境
1、安装 JDK (Java Development Kit)
download.java.net/jdk6/
2、安装 Android SDK
developer.android.com/sdk
3、安装 Eclipse
/android/eclipse/ ,然后安装 ADT(Android Development Tools)
5、新建 Android 项目
“New” ->Android Project,Project Name - 项目名称;Build Target - 编译项目的 SDK 版本;Application name - 程序名称;Package name - 包名;Min SDK Version - 程序所支持的最低 SDK 版本代号(2 对应 1.1,3 对应 1.5,4 对应 1.6)
6、运行 Android 项目
打开菜单 “Run” ->“Run Configurations” ->New launch configuration,设置启动项目名称,在 Android 选项卡中选择启动项目,在 Target 选项卡中设置模拟器
7、创建/使用模拟 SD 卡
创建 SD 卡,运行类似如下命令:mksdcard -l sdcard 512M d:androidsdcard.img
模拟器中使用 SD 卡,在项目配置的 Target 选项卡的 “Additional Emulator Command Line Options” 框中输入类似如下参数:-sdcard d:androidsdcard.img
8、配置模拟器
运行类似如下命令:android create avd --name android15 --target 2。或者直接在菜单 “Window” ->“Android AVD Manager” 中配置模拟器
9、浏览模拟 SD 卡中的内容
调试程序,在 DDMS 中选择 “File Explorer” ,在其中的 sdcard 目录下就是模拟 SD 卡中的内容
10、查看日志 LogCat
Window ->Show View ->Other ->Android ->LogCat
11、在模拟器中安装/卸载 apk
安装 apk 运行类似如下命令:adb install name.apk;卸载 apk 运行类似如下命令:adb uninstall packagename(注:这里的参数是需要卸载的包名)
12、反编译 Android 程序
解压 apk 文件,取出其中的 classes.dex 文件,运行类似如下命令:dexdump.exe -d classes.dex >dump.txt(其意思是将 classes.dex dump 出来,并将反编译后的代码保存到指定的文本文件中)
13、人品不好是出现的某些错误的解决办法
如果出现类似如下的错误等
no classfiles specified
Conversion to Dalvik format failed with error 1
解决办法:Project ->Clean
出现 Android SDK Content Loader 60% (一直卡在 60%)
解决办法:Project ->去掉 Build Automatically 前面的勾
14、查看 SDK 源代码
先想办法搞到源代码,如这个地址 /android.asp ,然后将其解压到 SDK 根路径下的 sources 文件夹内即可
二、Android 项目的目录结构
1、src - 用于放置源程序
2、gen - 自动生成 R.java 文件,用于引用资源文件(即 res 目录下的数据)
3、assets - 用于放置原始文件,Android 不会对此目录下的文件做任何处理,这是其与 res 目录不同的地方
4、res/drawable - 用于放置图片之类的资源;res/layout - 用于放置布局用的 xml 文件;res/values - 用于放置一些常量数据
5、AndroidManifest.xml - Android 程序的清单文件,相当于配置文件,配置应用程序名称、图标、Activity、Service、Receiver等
三、Hello World 程序
1、res/layout/main.xml 代码
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
android:id=“@+id/layout”
>
android:layout_width=“fill_parent” android:layout_height=“wrap_content” android:text=“@string/hello” /> android:layout_width=“fill_parent” android:layout_height=“wrap_content” android:id=“@+id/txt” /> 2、res/values/strings.xml 代码 layout 直接调用 values 中的.字符串 编程方式调用 values 中的字符串 webabcd_hello 3、res/drawable 目录下放置一个名为 icon.png 的图片文件 4、AndroidManifest.xml 代码 package=“com.webabcd.hello” android:versionCode=“1” android:versionName=“1.0”> android:label=“@string/app_name”> 5、Main.java 代码 package com.webabcd.hello; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.TextView; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 将指定的布局文件作为 Activity 所显示的内容 setContentView(R.layout.main); // 动态地在指定的容器控件上添加新的控件 TextView txt = new TextView(this); txt.setText(“动态添加控件”); // setContentView(txt); ((LinearLayout)this.findViewById(R.id.layout)).addView(txt); // 引用资源文件内的内容作为输出内容 TextView txt1 = (TextView)this.findViewById(R.id.txt); txt1.setText(this.getString(R.string.hello2)); } } Android(2) - 布局(Layout)和菜单(Menu) 介绍 在 Android 中各种布局的应用,以及菜单效果的实现 ? 各种布局方式的应用,FrameLayout, LinearLayout, TableLayout, AbsoluteLayout, RelativeLayout ? 为指定元素配置上下文菜单,为应用程序配置选项菜单,以及多级菜单的实现 1、各种布局方式的演示 res/layout/main.xml 代码 android:layout_width=“fill_parent” android:layout_height=“fill_parent”> android:layout_width=“fill_parent”> android:layout_height=“wrap_content” android:text=“FrameLayout”> android:layout_height=“wrap_content” android:text=“Frame Layout”> android:layout_height=“wrap_content” android:text=“@string/hello” />