欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

Android学习笔记(九)――更复杂的进度对话框

时间:2023-08-06 08:33:10 其他范文 收藏本文 下载本文

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

Android学习笔记(九)――更复杂的进度对话框

篇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” />