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知识点的学习告一 ...
随机推荐
- JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值
在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传 ...
- action script 3如何检测播放器域
检测播放器域 用户在上面观看媒体内容的网页的 URL 和域并非始终随时可用.如果托管网站允许,您可使用 ExternalInterface 类获取确切 URL.尽管如此,允许第三方视频播放器的一些 ...
- apache httpclient 4.5 兼容 http https
String responseContent = ""; try { SSLContextBuilder contextBuilder = new SSLContextBuilde ...
- 为什么一个object_id在dba_objects中为什么查不到记录?
SQL> drop table test purge;SQL> create table test (id int,comments CLOB); SQL> select INDEX ...
- 7z usecaes
1. Archive without compressing 7z a -t7z -mx=0 OutputFilename InputFilename Descryption: a: command, ...
- 由一个Servlet 看java入门常犯的几个错误
安装完java环境后,cmd-javac 报错 ------------->环境变量配错了,最后全配成系统变量,ok了 能浪费一天的时间 写一个最简单的Servlet ,to ...
- C#通过存储过程进行查询
一直不确定C#可以通过存储过程进行查询,今天才确定是可以的. 可以返回DataReader或者Dataset.
- django 用户登陆注册
注册登陆 views.py #!/usr/bin/env python # -*- coding:utf- -*- from django.shortcuts import render,render ...
- Swift实战-豆瓣电台(五)播放音乐
观看地址 http://v.youku.com/v_show/id_XNzMwODM0MzI0.html 在这节里面,我们简单学习了一下MediaPlayer的使用 引入媒体框架 import Med ...
- G面经prepare: Straight Partition of A Deck of Cards
Define “Straight” as 5 cards with consecutive numbers. Determine if the deck can be fully divided in ...