1 关于常见的对话框,主要有:

常见的对话框,单选对话框,多选对话框,进度条对话框(转圈类型的),带进度条的对话框。

案例结构:

完成如下结构的案例,将所有的案例都测试一下:

2 编写MainActivity,代码如下:

package com.itheima.dialog;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.ProgressDialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.content.DialogInterface.OnMultiChoiceClickListener;

import android.os.Bundle;

import android.view.View;

import android.widget.Toast;

public class MainActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void click1(View view) {

// 对话框的创建器

AlertDialog.Builder builder = new Builder(this);

builder.setTitle("我是对话框");

builder.setMessage("对话框显示的内容");

// 设置点击确定按钮后制定的动作

builder.setPositiveButton("确定", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(getApplicationContext(), "确定被点击了", 0).show();

}

});

    builder.setNegativeButton("取消", new OnClickListener() {// 设置取消按钮

@Override

public void onClick(DialogInterface dialog, int which) {

// 什么都不写默认实现的就是关闭掉对话框

Toast.makeText(getApplicationContext(), "点击了取消按钮",

Toast.LENGTH_LONG).show();

}

});

builder.setCancelable(false);

builder.create().show();

}

/**

* 单选对话框

*

* @param view

*/

public void click2(View view) {

// 对话框的创建器

AlertDialog.Builder builder = new Builder(this);

builder.setTitle("请选择您的性别");

final String[] items = { "男", "女", "未知" };

//这里的1表示默认选中的是哪个,0:表示选中的是第一个

builder.setSingleChoiceItems(items, 1, new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Toast.makeText(getApplicationContext(), "您的性别:" + items[which],

0).show();

dialog.dismiss();

}

});

builder.create().show();

}

/**

* 多选对话框

* @param view

*/

public void click3(View view) {

// 对话框的创建器

AlertDialog.Builder builder = new Builder(this);

builder.setTitle("请选择你最爱吃的水果");

final String[] items = { "苹果", "梨", "菠萝", "香蕉", "黄瓜" };

final boolean[] result = new boolean[] { true, false, true, false,false};

builder.setMultiChoiceItems(items, result,

new OnMultiChoiceClickListener() {

public void onClick(DialogInterface dialog, int which,

boolean isChecked) {

Toast.makeText(getApplicationContext(),

items[which] + isChecked, 0).show();

result[which] = isChecked;

}

});

builder.setPositiveButton("提交", new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < result.length; i++) {

if (result[i]) {

sb.append(items[i] + ",");

}

}

Toast.makeText(getApplicationContext(),

"您选中了," + sb.toString(), 0).show();

}

});

// builder.create().show();

builder.show();

}

// 进度条对话框

public void click4(View view) {

ProgressDialog pd = new ProgressDialog(this);

pd.setTitle("提醒");

pd.setMessage("正在加载数据...请稍等。");

pd.show();

}

// 带进度的进度条对话框

public void click5(View view) {

final ProgressDialog pd = new ProgressDialog(this);

pd.setTitle("提醒");

pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pd.setMax(100);

pd.setMessage("正在加载数据...请稍等。");

pd.show();

new Thread() {

public void run() {

for (int i = 0; i < 100; i++) {

try {

Thread.sleep(40);

} catch (InterruptedException e) {

e.printStackTrace();

}

pd.setProgress(i);

}

pd.dismiss();

};

}.start();

}

}

==============================================================================

1 光传感器

编写布局文件activity_main.xml

<RelativeLayout   Android指南针,案例效果:

2 编写布局文件,代码如下(activity_main.xml):

<RelativeLayout 次,表示重复播放2,如果是

// -1(Animation.INFINITE)表示一直重复播放

aa.setRepeatCount(3);

// aa.setRepeatCount(Animation.INFINITE);

// 如果不指定这个值,默认是重复播放的。下面表示:透明-->不透明-->透明

aa.setRepeatMode(Animation.REVERSE);

// true:界面为动画完成之后的效果

aa.setFillAfter(true);

// 开始播放

iv.startAnimation(aa);

}

/**

* 位移动画

*

* @param view

*/

public void trans(View view) {

// 下面表示x轴从0.0f-->1.0f;0.0f-->1.0f

// android.view.animation.TranslateAnimation.TranslateAnimation(int

// fromXType, float fromXValue, int toXType, float toXValue, int

// fromYType, float fromYValue, int toYType, float toYValue)

TranslateAnimation ta = new TranslateAnimation(

Animation.RELATIVE_TO_PARENT, // 相对于父窗体

0.0f, // 如果是320宽度的模拟器。这里0.0f表示是是父窗体的0%

Animation.RELATIVE_TO_PARENT, // 还是相对于父窗体

1.0f, // 表示父亲的100%

Animation.RELATIVE_TO_PARENT, 0.0f,

Animation.RELATIVE_TO_PARENT, 1.0f);

ta.setDuration(2000); // 设置时间间隔

ta.setRepeatCount(-1); // -1表示重复的操作

// 倒叙播放

ta.setRepeatMode(Animation.REVERSE);

iv.startAnimation(ta);

}

// 缩放动画

public void scale(View view) {

ScaleAnimation sa = new ScaleAnimation(0.1f, // 缩放的时候最开始的比例

2.0f, // 上面这两个参数x周表示从0.1倍到2倍

0.1f, 2.0f, // y轴从0.1-->2.0倍

Animation.RELATIVE_TO_SELF, // 后面4个参数的组合表示从自己中心点开始缩小放大

0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

sa.setDuration(2000); // 设置时间间隔

sa.setRepeatCount(1); // -1表示重复的操作

// 倒叙播放

sa.setRepeatMode(Animation.REVERSE);

iv.startAnimation(sa);

}

// 旋转动画

public void rotate(View view) {

RotateAnimation ra = new RotateAnimation(

0, // 开始的角度

360, // 旋转的解读

Animation.RELATIVE_TO_SELF,

0.0f,

Animation.RELATIVE_TO_SELF,

0.0f);

ra.setDuration(2000);

ra.setRepeatCount(1);

ra.setRepeatMode(Animation.REVERSE);

iv.startAnimation(ra);

}

//动画组合(包含多种动画)

public void set(View view) {

AnimationSet set = new AnimationSet(false);

TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.5f,

Animation.RELATIVE_TO_PARENT, 0.5f,

Animation.RELATIVE_TO_PARENT, -0.5f,

Animation.RELATIVE_TO_PARENT, 0.5f);

ta.setDuration(2000);

ta.setRepeatCount(1);

ta.setRepeatMode(Animation.REVERSE);

ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, Animation.RELATIVE_TO_SELF,

0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

sa.setDuration(2000);

sa.setRepeatCount(1);

sa.setRepeatMode(Animation.REVERSE);

RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF,

0.0f, Animation.RELATIVE_TO_SELF, 0.0f);

ra.setDuration(2000);

ra.setRepeatCount(1);

ra.setRepeatMode(Animation.REVERSE);

set.addAnimation(ra);

//set.addAnimation(ta);

set.addAnimation(sa);

iv.startAnimation(set);

}

}

=============================================================================

1 除了通过代码的方式制作补间动画之外,还可以通过xml的方式制作补间动画。

案例:

2 下面通过如下结构的代码编写出上面的案例:

3 编写的布局文件activity_main.xml如下:

<RelativeLayout 秒

android:repeatCount="1"      重复1次

android:repeatMode="reverse"

-->

<translate 毫秒 -->

<item

android:drawable="@drawable/girl_1"

android:duration="200"/>

<item

android:drawable="@drawable/girl_2"

android:duration="200"/>

<item

android:drawable="@drawable/girl_3"

android:duration="200"/>

<item

android:drawable="@drawable/girl_4"

android:duration="200"/>

<item

android:drawable="@drawable/girl_5"

android:duration="200"/>

<item

android:drawable="@drawable/girl_6"

android:duration="400"/>

<item

android:drawable="@drawable/girl_7"

android:duration="400"/>

<item

android:drawable="@drawable/girl_6"

android:duration="400"/>

<item

android:drawable="@drawable/girl_7"

android:duration="400"/>

<item

android:drawable="@drawable/girl_6"

android:duration="400"/>

<item

android:drawable="@drawable/girl_7"

android:duration="400"/>

<item

android:drawable="@drawable/girl_8"

android:duration="200"/>

<item

android:drawable="@drawable/girl_9"

android:duration="200"/>

<item

android:drawable="@drawable/girl_10"

android:duration="200"/>

<item

android:drawable="@drawable/girl_11"

android:duration="200"/>

</animation-list>

2 编写MainActivity,代码如下:

package com.itheima.frameanimation;

import android.app.Activity;

import android.graphics.drawable.AnimationDrawable;

import android.os.Bundle;

import android.view.MotionEvent;

import android.widget.ImageView;

public class MainActivity extends Activity {

private ImageView iv;

private AnimationDrawable mAnimationDrawable;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv = (ImageView) findViewById(R.id.iv);

// 把xml文件的动画资源设置为iv背景

iv.setBackgroundResource(R.drawable.girl);

// 获取设置的动画资源。 执行可能需要花费一定的时间

mAnimationDrawable = (AnimationDrawable) iv.getBackground();

}

public boolean onTouchEvent(MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

mAnimationDrawable.start();

return true;

}

return super.onTouchEvent(event);

}

}



21_Android中常见对话框,光传感器,通过重力感应器编写出指南针应用,帧动画,通过Jav代码的方式编写补间动画,通过XML的方式编写补间动画的更多相关文章

  1. android中常见对话框之一AlertDialog

    在Android应用中,有多种对话框:Dialog.AlertDialog.ProgressDialog.时间.日期等对话框. (1)Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽 ...

  2. Android开发中常见的设计模式(二)——Builder模式

    了解了单例模式,接下来介绍另一个常见的模式--Builder模式. 那么什么是Builder模式呢.通过搜索,会发现大部分网上的定义都是 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ...

  3. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  4. 云服务器 ECS Linux 系统中常见的日志文件介绍

    云服务器 ECS Linux 系统中,日志文件是非常重要的文件,它们记录了很多系统中重要的事.Linux 系统中常见日志文件概述如下: /var/log/cron可以在 cron 文件中检查 cron ...

  5. 【Lucene3.6.2入门系列】第03节_简述Lucene中常见的搜索功能

    package com.jadyer.lucene; import java.io.File; import java.io.IOException; import java.text.SimpleD ...

  6. Java开发中常见的危险信号(中)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  7. shell脚本中常见的一些特殊符号和作用详解

    这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下   在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...

  8. 对开发中常见的内存泄露,GDI泄露进行检测

    对开发中常见的内存泄露,GDI泄露进行检测 一.GDI泄露检测方法: 在软件测试阶段,可以通过procexp.exe 工具,或是通过任务管理器中选择GDI对象来查看软件GDI的对象是使用情况. 注意点 ...

  9. java项目中常见的异常及处理

    Java开发中常见异常及处理方法 1.JAVA异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API ...

随机推荐

  1. Go 语言函数

    函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回类型,和参数. ...

  2. Bootstrap3 代码-代码块

    多行代码可以使用 <pre> 标签.为了正确的展示代码,注意将尖括号做转义处理. <p>Sample text here...</p> <pre>< ...

  3. Dynamics CRM 查找字段下拉的最多10个选项的排序规则

    原文链接来自DTCCh论坛http://dynamics.ms-talent.com.cn/bbs/content/?id=1406&catogory=CRM 如果你是从事dynamics c ...

  4. Redis之(二)数据类型及存储结构

    Redis支持五中数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sortedset:有序集合). Redis定义了丰富的原语命令,可以直接与Redis ...

  5. Dynamics CRM 部署NLB后使用群集名称访问弹验证框验证不过的解决方法

    自上次部署NLB到现在已有段时间了,今天部署完后遇到了个问题,上次也遇到过但忘记了,本篇作为对该问题的一个记录,部署文档:https://blogs.msdn.microsoft.com/niran_ ...

  6. Spring MVC 实践 - Base

    Spring MVC 实践 标签 : Java与Web Spring Web MVC Spring-Web-MVC是一种基于请求驱动的轻量级Web-MVC设计模式框架, Spring MVC使用MVC ...

  7. Unity UGUI图文混排(七) -- 下划线

    之前更新超链接的时候,忘了搭配实现一个下划线的功能,这篇文章就是来补上这一个功能,时间有点长,一方面没有很好的思路,一方面也没多少时间. 先在网上收集了一下下划线的实现操作,一种是在文本下再创建一个文 ...

  8. ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS下使用传感器和执行器

    ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四 ...

  9. 27 自定义View 和案例

    有时安卓提供的View不满足我们的需求时可以创建一个类继承View或其子类重写方法 如 package com.qf.sxy.day28_customview.view; import android ...

  10. EBS多组织结构

    1. 业务组: 它代表组织结构的最高层次, 它分离了人力资源的信息. 例如, 当你查询人员时, 它会列出所有分配给相应业务组的成员, 而你自己所属于的组织只不过是业务组的一份子. 这样说可能造成一种误 ...