清单文件: AndroidManifest.xml
- package: 一台手机上,包名用来识别一个应用。也就是说,不能有两个应用是同一个包名的。
- adb uninstall 包名 ; adb install apk全路径
- 签名一样,版本号不低于旧版本,重复安装会覆盖
- 签名不同,新包安装失败。
- versionCode : 版本号。 必须是数字
- versionName: 版本名。 字符串。可以是中文
- apllication
-
label: 应用名字。
-
icon : 图标
-
Activity
- label
- icon
- name: 所使用Activity的全路径。 包名+ . +类名。
-
MainActivity extends Activity
- onCreate() : 当界面被创建的时候会被调用。
- setContentView() R.laytout.xx
- setContentView(new TextView(this));
LinearLayout
-layout_weightSum : 可以省略
- orientation
- horizontal
- vertical
子节点有的属性
- layout_weight
- layout_gravity: 在界面的子组件的位置
- 如果是水平布局,只能调整垂直方向的重心
- 如果是垂直布局,只能调整水平放的重心。 left right horizontal_center
- layout_width: 宽度
- 100px
- wrap_content: 包裹内容
- match_parent: 和父组件一样大
- layout_height: 高度
TextView
- gravity: 控制内容在组件里显式的位置
尺寸数值
-
dp: px=dp*(dpi/160)
dpi: dot per inch: 每英寸的像素点数。可以调整我屏幕的分辨率,来展示像素密度的问题。
- 假设屏幕大小不变 都是两英寸
- 如果分辨率是 320*480 那么像素密度就是 160.那么 1dp == 1px. 160 dp 就是 160px, 就是屏幕的中心
- 如果分辨率变成 480960. 像素密度是 240 那么 1dp(240/160) = 1.5px. 160dp == 240px. 一样在屏幕中央。
-
px:
-
pt:
-
sp: 这个一般是用来指定字符的大小的,功能类似dp。所以一般设置文字大小推荐使用这个sp。
布局
LinearLayout
- orientation : 线性布局布局方向
- horizontal: 水平布局
- vertical: 垂直布局
- 子节点属性:
- layout_gravity: 组件的重心。
- 如果是水平布局,不能水平居中
- 如果是垂直布局,不能垂直居中。
ReletiveLayout:
没有layout_gravity
-
如果一个组件是依赖另外一个组件布局的,如果剩余空间不够,会被压缩。
-
如果所依赖控件比当前控件出现的还晚,也就是找不到对应的id,可以
android:layout_above="@+id/center"
这种方式引用id
子组件常见属性
RelativeLayout
相对父节点的属性
-
android:layout_alignParentLeft 是否跟父元素左对齐
-
android:layout_alignParentTop 是否跟父元素顶部对齐
-
android:layout_alignParentRight 是否跟父元素右对齐
-
android:layout_alignParentBottom 是否跟父元素底部对齐
-
android:layout_centerVertical 在父元素中垂直居中
-
android:layout_centerHorizontal 在父元素中水平居中
-
android:layout_centerInParent 在父元素中居中 相对于别的节点的属性
-
android:layout_alignBaseline 跟指定控件中间对齐(重心对齐)
-
android:layout_alignLeft 跟指定控件左对齐
-
android:layout_alignRight 跟指定控件右对齐
-
android:layout_alignTop 跟指定控件顶部对齐
-
android:layout_alignBottom 跟指定控件底部对齐
-
android:layout_toRightOf 在指定控件的右边
-
android:layout_toLeftOf 在指定控件的左边
-
android:layout_above 在指定控件的上边
-
android:layout_below 在指定控件的下边
-
如果一个组件是依赖另外一个组件布局的,如果剩余空间不够,会被压缩。
-
如果所依赖控件比当前控件出现的还晚,也就是找不到对应的id,可以
android:layout_above="@+id/center"
这种方式引用id
FrameLayout:
可以使用layout_gravity,而且不限制方向。
AbsoluteLayout:
基本没用,子组件只能设置 layout_x layout_y
margin padding区别
-margin是设置当前组件距离父组件边框的为孩子
- padding: 设置当前组件添加子组件的时候,有多少的范围是不能用来显示的。
按钮点击
setClickListener()
Logcat
- 视图显示
- sysout的区别
- 不同的等级
- 过滤器
- 直接搜索 只能搜索text里的内容
- 设置filter 通过包名过滤
- Log.d(tag, msg)
- Log.v(tag, msg)
- Log.i(tag, msg)
- Log.w(tag, msg)
- Log.e(tag, msg)
Toast
Toast不能在子线程里show
Toast t = Toast.makeText(MainActivity.this, "btn1被点击了", Toast.LENGTH_SHORT);
t.show();