更新11.12:学习路线,基本布局,基础组件,Activity介绍,对话框介绍
教材:视频《千锋android视频》
第一部分
1.1学习路线图
1.2环境搭建
1.3目录结构
src,编写Java代码;
gen,资源文件标示符
assets,原生资源文件,保存音频之类的。
bin,编译生成的apk
libs,第三方类库的jar包
res,资源文件
AndroidManifest.xml清单文件,包名,版本号,相关授权
第二部分
2.1线性布局
加载文件setContentView。必须放在程序第一行,主要是用来加载XML布局。
字体sp,控件尺寸dp,像素px(不常用);
线性布局嵌套太深,不适合编程。
layout_gravity:表示子元素位于父元素的垂直位置;
gravity:表示空间内部的元素位于该控件的位置。
weight:权重,比例。
2.2相对布局
基本位置位于框体的左上角。
alignParentTop: 最顶端;
centerVertical: 父布局中间;
below: 指定元素下面;
toRightOf: 指定元素右边;
2.3布局属性
任何一个布局都有宽高两个属性。
background: 背景颜色;
margin:按钮位于外框体的举例(外边距)。
padding:按钮内文字位于按钮边框位置(内边距)。
hint:默认内容。
第三部分
3.1Button
所有组件先设成类的成员变量,private修饰;再在onCreate方法中和xml对应。
view和其子类都有时间触发,一般不让view直接处理,而让子类处理。
ImageButton里面的src属性,放置图片。
longclick包含click。
常用setOnClickListener。
有多个按钮设置监听器,可以让activity实现onclicklistener类,再重写onclick方法。
click方法也可以在xml中设置onclick属性,接方法名,然后在java文件中设置这个方法,参数是View view。
3.2TextView
inputTyple:设置键盘类型
hint:提示信息
string.trim(); 去掉空格
editText.setError; 出现提示错误
使用正则表达式去校验。
eidtText.setOnKeyListener;设置键盘监听器
3.3.AutoCompleteText
适配器充当一个转换的功能。是一个位于视图和数据之间的桥梁
.setAdapter 设定适配器。一般用数组适配器。
数组适配器是ArrayAdapter<String>
adaper =
new ArrayAdapter<String>(
this , android.R.layout.
simple_list_item_1 , objcet);
可以定义一个数组xml在strings.xml下
String[]
citys = getResources().getStringArray(R.array. citys); 来获取strings.xml里的字符串
或者使用createFromResource直接从Strings.xml中获取并setDropDownViewResource(
resource)。
3.5Checkbox
在xml设置一个onclick属性onClick =
"onCheckboxClicked"
在java中给出onCheckboxClicked(View view)方法,
CheckBox checkBox = (CheckBox)view;
boolean
isCheck = checkBox.isChecked();
switch (view.getId()) {
case R.id.
checkBox1: }
通过判断isCheck来设置行为。
3.6Radio Buttons
设置Radio Group,里面添加Radio Buttons,设置onClick属性,设置方法和CheckBox类似。
Toggle Buttons / Swtich
textoff,texton属性设置切换文本。
设置onclick属性,然后重写方法,判断boolean类型true or false
3.7spinner
设置内容,类似autoCompleteText。
实现OnItemSelectedListener接口,重写onItemSelected这个类,通过spinner.getItemAtPosition(position)获取选中的值。
3.8DatePicker
设置一个DatePicker.OnDateChangedListener,使用init方法调用
init( year, monthOfYear, dayOfMonth ,
OnDateChangedListener) 在监听器里设置相应方法。
Calendar
calendar = Calendar. getInstance(); 获得系统日期。
year = calendar.get(Calendar. YEAR);
monthOfYear = calendar.get(Calendar. MONTH);
dayOfMonth = calendar.get(calendar.
DAY_OF_MONTH );
在监听器这里得到的月份需要+1。
3.9TimerPicker
没有init方法,直接使用
setOnTimeChangedListener 设置监听内容
还有AnalogClock和TextClock只能显示,不能设置。
3.10评分控件(未完)
progress bar
style属性设置样式。
bar.setMax( )设置最大值。
第四部分
4.1Activity介绍
OnCreate中,setContentView()设置布局。
OnPause中,设置需要保存。
新建的Activity需要在清单文件中注册。
4.2Acticity值传递
使用intent filter来设置Activity动作。
使用startActivity()来启动一个窗体。
第一种:
Intent intent = new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);可实现
第二种:
Intent intent = new Intent();
intent.setClass(MainActivity.this,NextActivity.class);
第三种
Intent intent = new Intent("action");
action要在跳转的Activity在mannifest.xml中定义action标签。再加上一个默认类别
第四种
intent.setAction("action");
值传递,最大的可以传递一个List集合,类似键值对,通过intent.putExtra("name","value");
或者传入一个bundle,给bundle.putString或其他键值对绑定到一起。
在接受值得Activity中
Intent intent = getIntent();
intent.getIntExtra("name");
或者bundle = intent.getIntExtra("bundle"); intent.getString();
输出,使用先设置TAG,然后Log.i(TAG,value);
4.3Activity回传值
使用startActivityForResult(intent,requestCode);
在传值的的Activity中设置意图的setResult(
resultCode,
data)方法,调用finish();
重写方法 onActivityResult(
int requestCode,
int resultCode, Intent data)
通过对requestCode和resultCode进行判断,可以获取data的值。
4.4Activity生命周期
最开始:create—start—resume;
后台运行:pause—stop;
重新开始:restart—start—resume;
终止:pause—start—destroy;
在create方法中完成数据初始化和控件绑定。
4.5状态保护
在onSaveInstanceState中保存里面的bundle
在Activity销毁后,可以在onRestoreInstance或onCreate中获得。
第五部分
5.1AlertDialog
不直接使用Dialog类,使用它的子类的内部类AlertDialog.Builder。
private AlertDialog.Builder
builder;
builder =
new AlertDialog.Builder(
this);
builder.setTitle( "请选择" );
builder.setMessage( "你确定要删除吗" );
builder.setPositiveButton(
text,
listener) 设置按钮事件,确定取消类似。
使用builder .show();让对话框显示。
单选框使用builder.setSingleChoiceItems(
items,
checkedItem,
listener)
多选框builder.setMultiChoiceItems(
items,
checkedItems,
listener)
具体内容看API
5.2自定义对话框
View view = LayoutInflater.
from(MainActivity.
this).inflate(R.layout.
dialog ,
null );
builder.setView(view);
view中的控件,使用view.findViewById()来获得。
通过这样的方式来设置。
5.3日期时间对话框
private TimePickerDialog dialog2;
dialog = new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
}
}, year, monthOfYear, dayOfMonth);
时间和日期类似。
5.4toasts
toast.maketext(MainActivity.this,text,duration).show();
length_short = 0; length_long = 1;
setGravity设置位置。
自定义toasts可以通过:
new 新的实例new Toast(MainActivity.this),set属性修改,setView加载。
view类似上面自定义对话框
5.5进度条对话框
dialog =
new ProgressDialog(
this );
可以设置setMax,setProgress。
setCancelable(false);设置可否取消 false不可取消