android 学习随笔十九(对话框、样式、主题、国际化 )
1、对话框
package com.itheima.dialog; import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.Menu;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void click1(View v){
//创建对话框创建器
AlertDialog.Builder builder = new Builder(this);
//设置图标
builder.setIcon(android.R.drawable.ic_dialog_alert);
//设置标题
builder.setTitle("警告");
//设置内容
builder.setMessage("欲练此功必先自宫,春晓你确定要自宫吗"); //设置确定按钮
builder.setPositiveButton("确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "自宫完成,谢谢使用", 0).show(); }
});
//设置取消按钮
builder.setNegativeButton("取消", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "若不自宫,一定不成功", 0).show(); }
}); //显示对话框
AlertDialog ad = builder.create();
ad.show();
} public void click2(View v){
//创建对话框创建器
AlertDialog.Builder builder = new Builder(this);
//设置图标
builder.setIcon(android.R.drawable.ic_dialog_alert);
//设置标题
builder.setTitle("选择您的家乡"); final String[] items = new String[]{
"火星",
"塞伯坦",
"氪星",
"M78星云",
}; //设置单选选项
builder.setSingleChoiceItems(items, 1, new OnClickListener() { //dialog:触发此方法执行的那个对话框
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, items[which], 0).show();
//对话框消失
dialog.dismiss(); }
}); //显示对话框
builder.show();
} public void click3(View v){
//创建对话框创建器
AlertDialog.Builder builder = new Builder(this);
//设置图标
builder.setIcon(android.R.drawable.ic_dialog_alert);
//设置标题
builder.setTitle("选择您需要的武器"); final String[] items = new String[]{
"板凳",
"啤酒瓶",
"开山刀",
"AK-47",
"爱国者",
"唐晓平"
}; final boolean[] checkedItems = new boolean[]{
true,
false,
false,
false,
false,
true
}; //设置多选选项
builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { @Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
//记录用户的选择
checkedItems[which] = isChecked;
}
});
builder.setPositiveButton("确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
String text = "";
for (int i = 0; i < checkedItems.length; i++) {
text += checkedItems[i]? items[i] + ",": "";
}
Toast.makeText(MainActivity.this, text, 0).show(); }
}); builder.show();
} public void click4(View v){
//创建进度条对话框
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setIcon(android.R.drawable.ic_input_add);
dialog.setTitle("正在自宫中,请稍候...");
dialog.setMax(100);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
Thread t = new Thread(){
public void run() {
for (int i = 0; i <= 100; i++) {
dialog.setProgress(i);
try {
sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//自宫完成,进度消失
dialog.dismiss();
}
};
t.start();
dialog.show();
}
}
<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"
android:orientation="vertical"
> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定取消对话框"
android:onClick="click1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选对话框"
android:onClick="click2"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="多选对话框"
android:onClick="click3"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="进度条对话框"
android:onClick="click4"
/> </LinearLayout>
2、样式和主题
<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"
android:orientation="vertical"
> <TextView
android:text="@string/hello_world"
style="@style/lakesouthstyle"
/>
<TextView
android:text="@string/hello_world"
style="@style/chunxiaostyle"
/>
<TextView
android:text="@string/hello_world"
style="@style/lakesouthstyle.miaorunstyle"
/>
<TextView
android:text="@string/hello_world"
style="@style/lakesouthstyle"
/> </LinearLayout>
在values目录下定义样式,主题和样式定义相同,主题应用在清单文件中(主题用于Activity),样式应用在布局文件中
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:background">#ff0000</item>
</style>
<style name="lakesouthstyle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">30sp</item>
<item name="android:textColor">#00ff00</item>
</style>
<style name="chunxiaostyle" parent="lakesouthstyle">
<item name="android:textSize">20sp</item>
</style>
<style name="lakesouthstyle.miaorunstyle">
<item name="android:textColor">#ff0000</item>
</style>
</resources>
3、国际化
根据语言需求定义values,values_zh,values_it,drawable-en-rUS(找出国家语言简写)等定义资源。
文本国际化
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">11_国际化</string>
<string name="action_settings">Settings</string>
<string name="hello_world">这是英文的你好世界</string> </resources>
values,英文
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">11_国际化</string>
<string name="action_settings">Settings</string>
<string name="hello_world">这是中文的你好世界</string> </resources>
values-zh
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">11_国际化</string>
<string name="action_settings">Settings</string>
<string name="hello_world">这是意大利文的你好世界</string> </resources>
values-it
图片也可以国际化,定义drawable-en-rGB、drawable-en-rUS等
android 学习随笔十九(对话框、样式、主题、国际化 )的更多相关文章
- Android学习(十九)Dialog对话框
一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗 ...
- android 项目学习随笔十九(MD5)
import java.security.MessageDigest; public class MD5Encoder { public static String encode(String str ...
- android 学习随笔十四(页面跳转与数据传递)
1.activity 创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 <intent-filter> ...
- android 学习随笔十八(广播与服务 )
1.广播接收者注册 清单文件注册(Android四大组件都要在清单文件中注册) 一旦应用部署,广播接收者就生效了,直到用户手动停止应用或者应用被删除 广播接收者可以使用代码注册 需要广播接收者运行时, ...
- android 学习随笔十六(广播 )
1.广播接收者 BroadcastReceiver 接收系统发出的广播 现实中的广播:电台为了传达一些消息,而发送的广播,通过广播携带要传达的消息,群众只要买一个收音机,就可以收到广播了 Andro ...
- android 学习随笔十五(Activity的生命周期与摧毁时返回数据 )
1.Activity的生命周期 onCreate:创建时调用 onStart:在屏幕上可见,但是还没有获得焦点 onResume:可见并且获得焦点 onPause:可见,但是失去焦点 onStop:不 ...
- android 学习随笔十二(网络:使用异步HttpClient框架)
使用异步HttpClient框架发送get.post请求 在https://github.com/ 搜索 asyn-http https://github.com/search?utf8=✓& ...
- android 学习随笔十(网络:get、post提交数据)
1.get public class Tools { public static String getTextFromStream(InputStream is){ byte[] b = new by ...
- 十一、Android学习第十天——项目开始(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...
随机推荐
- boost::circular_buffer
boost::circular_buffer的push_back分析 circular_buffer为了效率考虑,使用了连续内存块保存元素 使用固定内存,没有隐式或者非期望的内存分配 快速在cir ...
- boost.compressed_pair源码剖析
意义 当compressed_pair的某一个模板参数为一个空类的时候将对其进行“空基类优化”,这样可以使得compressed_pair占用的空间比std::pair的更小. 参考如下代码: #in ...
- [收藏夹整理]VC部分
c++多线程(一) C++11 多线程 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点) 鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员) [笔记]VS ...
- 微信公众平台开发(112) 自动更新微信access token
关键字:Memcache access_token 更新 存储 7200 本文介绍如何存储及更新 access token的方法. 一.Access Token access_token是公众号的全局 ...
- linux:centos准备及安装
1>.安装前准备(将虚拟机和映像文件iso下载好) 1.1>.centos下载(建议使用Filezilla下载(http://filezilla-project.org/download. ...
- 安装shopex注意事项
[原创]关于PHP5.3.x和Zend Optimizer(Zend Guard Loader),以及shopex4.8.5安装的问题 http://dzmailbox.blog.163.com/b ...
- 安装windowbuilder错误一例
eclipse是3.7版本,安装了windowbuilder,大致步骤如下: http://www.cnblogs.com/gladto/archive/2011/07/21/2112836.html ...
- ls常用参数
ls常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩Linux的老司机们每天都要敲的命令,但是这个鸡蛋的命令还有很多中玩法哟~跟着我一起敲一遍吧!在这里我就列举几个常 ...
- 初始化 Gradle 工程目录(转自: 隔叶黄莺 Unmi Blog)
最近重新在 Eclipse 中打开旧的 Maven 项目,总有些什么错误,备受折磨.期间试手了 Ant+Ivy, 现今试用了下 Gradle,感觉不错,它应该才是我真想要的,Maven 差不多该扔到一 ...
- 无序数组的中位数(set+deque)hdu5249
KPI Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...