安卓项目目录结构
src存放java源代码。
gen存放系统自动生成的配置文件
res存放应用用到的所有资源文件,如图片,布局等等
drawable存放不同分辨率的图片
layout存放布局文件
values存放字符串
dimens.xml
strings.xml、主题,颜色、样式 #213443 颜色
styles.xml等资源文件
menu 文件夹 保存一个菜单资源 一个文件表示一个菜单包括子菜单 名字任意取 以.xml结尾
bin 文件夹作为源码编译后的输出文件夹。这个可以在Eclipse中进行设置,你可以设置为任何你愿意的路径作为编译后输出文件夹。
andriodmanifest.xml清单文件.
大家都知道,在Android布局文件中控件的高度与宽度设置时有三个属性:fill_parent,match_parent,wrap_content。
- fill-parent:
设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。 - match-parent:
Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了. - wrap_content:
设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。
TextView 控件
android:id -- 控件的ID
android:layout_width -- 控件的宽度
android:layout_height -- 控件的高度
android:text -- 文本内容
android:textSize -- 文本大小
android:textColor -- 文本颜色
android:background -- 控件背景
android:hint -- 输入显示文本 EditText
android:inputType -- 输入文本类型
插件中设置间隔三个px固定,不推荐 dp 推荐 dip sp文字
按钮的监听事件 log.i 日志
1:通过匿名内部类;
2:通过独立类实现(自定义一个类)
3:实现接口类(自身类实现OnClickListener接口)
4:通过成员内部类实现;
5:在xml文件中添加OnClick监听事件,在MainActivity中创建监听方法
textview跑马灯效果:
1、定义textView标签的4个属性:
android:singleLine="true"//使其只能单行
android:focusable = "true"//获得焦点(当设备是触屏设备时需结合focusableInTouchMode) 使循环
android:ellipsize=”marquee”//以横向滚动方式显示(需获得当前焦点时) 去掉省略号
android:focusableInTouchMode="true" //触屏模式下可获得焦点(模拟器是触屏设备)
// android:marqueeRepeatLimit="marquee_forever" 使永远转
2、自定义类继承TextView:
实现三个构造函数;
复写isfocued方法,返回true(默认都有有焦点,平常只有一个有焦点在第一行上)
3、使用自定义的类,方法是用包名和自定义类名代替TextView(src下的包名+类名)
自动补充字符
1,AutoCompleteTextView
2,初始化控件
3,设置适配器,ArrayAdapter(String) (this,android.R.layout.simple_list_item_1,res) ;
4,初始化数据源 String[] res={"","","","",};
5,将适配器和控件绑定 acTextView.setAdapter(adapter);
6,设置匹配门槛 completionThreshold="" 几个字符
MultiAutoCompleteTextView 多次匹配字符,字符间并以都好等(自定义)结尾
android自带的MultiAutoCompleteTextView只能用逗号做分隔符,要用别的字符的话就需要自定义了
ToggleButton按钮实现开关效果
1, ToggleButton
2, 属性android:checked(默认值false),textOn="开"(true),textOff=“关”(false)
3, 初始化控件 implements OnCheckedChangeListener
// 初始化togglebutton控件
tb = (ToggleButton)findViewById(R.id.toggleButton1);
img = (ImageButton)findViewById(R.id.imageView1);
// 给TB设置监听器'
tb.setOnCheckedChangeListener(this);
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub 当点击这个tb时,更换img背景
img.setBackgroundResource(isChecked?R.drawable.on:R.drawable.off);//调取drawable中图片on或者off
}
4, Backgroud设置背景图片
CheckBox
初始化findViewById
设置监听器
// 给TB设置监听器'
tb.setOnCheckedChangeListener(this);
tb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
//获得checkBox文本内容
String text = tb.getText().toString();
Log.i("tag", text);
}
});
1.RadioGroup:是RadioButton的一个集合,提供多选一机制;
2.属性:android:orientation="vertical"|"horizontal"
注意导包RadioButton,接口implements OnCheckedChangeListener,
设置监听, switch(checkedId){
Case R.id.radio0: logi.i(…); break;
Case R.id.radio0: logi.i(…);break;
Default: break;
}
布局五类:5大布局,线性,相对,帧,绝对,表格 布局中可以套用布局
1.线性布局: 子控件横向或者竖向 orientation vertical/horizontal ,
决定布局中子布局位置gravity center、 可多个属性连用
Layout_gravity 子类位置 、layout_weight 设置占几份,本身控件占父类的比例 wrap_parent注意:match_parent相反;
2.相对布局:相对父类容器或控件间相对位置
Margin 系列属性 等等
3.帧布局 framelayout 后面的会覆盖前面设置的
android:foreground 前景
4.绝对布局 layout_x _y基本用不到
5.表格布局 :
Collapsecolumns =“,“ 隐藏索引列
Shrinkcolumns =“” 收缩
Stretchcolumns = 拉伸,占空间
Layout_column = 该空间显示在第几列 从0
Layout_span = 该控件占几列
Android四大组件
1.Activity
2.Service
3.BroadcastReceiver
4.Content Provider
Activity是一个应用程序组件,提供用户与程序交互的界面
1.继承Android的Activity类
2.重写方法
3.设置显示布局
4.在AndroidManifest文件中,注册Activity
Activity生命周期
onCreat()
onStart()
onResume() --活动状态 activity处于界面最顶端,获取焦点
onPause() --暂停状态 activity失去焦点,但对用户可见
onStop() --停止状态 activity被完全遮挡,但保留所有状态和成员信息
onDestroy() --非活动状态 activity被停止
onRestart()
在两个activity之间
在setOnClickListener(new OnClickListener){
@
Public void onClick(View v){
Intent intent = new Intent(MainActivity.this,Second_Activity.class);
MainActivity.this.startActivity(intent);
}
}
解释上面:Intent一般用来启动活动、启动服务等。
Intent的构造方法Intent(context , class) 第一个参数要求启动活动的上下文,第二个参数指定想要启动的目标活动。
Activity类提供了一个startActivity方法,这个方法是专门用来启动活动的,他接受一个Intent方法。
老师在这里直接把构建好的Intent传入startActivity方法中了。
Intent可理解为意图,它来协助完成Android各个组件之间的通讯
使用Intent实现页面跳转: //www.greatytc.com/p/a8605ad49228 详细
无返回结果的:startActivity(intent)
新建2个CLASS文件->布局文件xml ->清单文件中声明activity,设置先启动页面 -> 初始化按钮,通过点击按钮实现页面跳转->在点击事件中 intent -> startActivity(intent)
Intent(这个类(要用的).this,SActivity.class) or 全局变量private Context mcontext Intent(mcontext, SActivity.class)有返回结果的:startActivityForResult(inten,requestCode);
OnActivityResult(int requestCode,int resultCode,Intent data); A接受B回传数据
SetResult(resultCode,data);B通过这个方法回传给A页面
requestCode参数是当前方法的请求码,定义一个请求码作为当前跳转方法的标识;一个是resultCode,定义一个resultCode作为当前目标Activity的标识。另一个是data,是当前目标Activit的intent对象,也是存放回传数据的容器,回传到第一个Activity的实际上就是一个Intent对象,将数据携带在这个intent对象中回传过去。
通过requestCode和resultCode可以确定接收哪一个StartActivityForResult方法和哪一个目标Activity返回来的数据,读取intent中携带的数据。
finish() 销毁当前页面,requestCode resultCode ,通过intent返回,
Intent intent = new Intent(mContext,SActivity.class);
//在这里将requestCode定义为1
startActivityForResult(intent,1);
//返回 onActivityResult
Intent intent= new Intent();
intent.putExtra(key,返回参数);
setResult(resultCode,intent);
finish();
//接收 先判断requastCode和resultCode
String content = getxxxxExtra(key); 将数据放入变量content中,略
tv.setText(content); 放到tv中
Android-App签名打包
- 为了保证程序开发者合法
- 防止部分人通过使用相同package name混淆替换已安装的程序,从而出现恶意篡改
- 保证每次发布版本的一致性
String.subString
1.String str;
str.subString(int beginIndex)------表截取从beginIndex到结尾的字符串
2.String str;
str.subString(int beginIndex,int endIndex)-------表截取从beginIndex到endIndex-1的字符串
**************************************关于@后面加+
@+id是在R.java中添加id,@id表示引用现有id
如果在@后面使用“+”,表示当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值,例如,@+id/xyz会在R.java文件中生成int xyz = value,其中value是一个十六进制的数。如果xyz在R.java中已经存在同名的变量,就不再生成新的变量,而该组件会使用这个已存在的变量的值。
因此,使用@+id和使用@id都是对的。