Android布局
- LinearLayout (线性布局)
android:orientation 属性指定了排列方向是 vertical,如果指定的是horizontal,控件就会在水平方向上排列了。
android:gravity 是用 于指定文字在控件中的对齐方式
android:layout_gravity 是用于指定控件在布局中的对齐 方式 RelativeLayout 相对布局
android:layout_weight="1"(权重分布),这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
android:visibility=invisible控制布局是否显示 :1、显示 visible 2、不显示,但占空间 invisible 3、隐藏 gone
- RelativeLayout(相对布局)
- FrameLayout(帧布局)
- TableLayout(表格布局)GridLayout 网格布局
首先它与LinearLayout布局一样,也分为水平和垂直两种方式,默认是水平布局,一个控件挨着一个控件从左到右依次排列,但是通过指定Android:columnCount设置列数的属性后,控件会自动换行进行排列。另一方面,对于GridLayout布局中的子控件,默认按照wrap_content的方式设置其显示,这只需要在GridLayout布局中显式声明即可。
其次,若要指定某控件显示在固定的行或列,只需设置该子控件的android:layout_row和android:layout_column属性即可,但是需要注意:android:layout_row=”0”表示从第一行开始,android:layout_column=”0”表示从第一列开始,这与编程语言中一维数组的赋值情况类似。
最后,如果需要设置某控件跨越多行或多列,只需将该子控件的android:layout_rowSpan或者layout_columnSpan属性设置为数值,再设置其layout_gravity属性为fill即可,前一个设置表明该控件跨越的行数或列数,后一个设置表明该控件填满所跨越的整行或整列。
AbsoluteLayout
android:layout_x 指定控件在父布局的x轴坐标
android:layout_y 指定控件在父布局的 y轴坐标 - AbsoluteLayout(绝对布局)
Intent作用
Intent是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由 Intent来协助完成 Android各个组件之间的通讯。比如说调用startActivity()
来启动一个Activity,或者由broadcaseIntent()
来传递给所有感兴趣的BroadcaseReceiver
,再或者由startService() / bindservice()
来启动一个后台的 service。所以可以看出来,Intent 主要是用来启动其他的 activity 或者 service,所以可以将 intent 理解成 activity 之间的粘合剂。
Intent作用的表现形式为:
- 启动Activity
通过Context.startActvity() / Activity.startActivityForResult()
启动一个Activity; -
启动Service
通过Context.startService()
启动一个服务,或者通过Context.bindService()
和后台服务交互; -
发送Broadcast
通过广播方法Context.sendBroadcasts() / Context.sendOrderedBroadcast() / Context.sendStickyBroadcast()
发给Broadcast Receivers
Intent对象大致包括7大属性:Action(动作)、Data(数据)、Category(类别)、Type(数据类型)、Component(组件)、Extra(扩展信息)、Flag(标志位)。其中最常用的是Action属性和Data属性。
传参
1 一般的注册或者登陆成功后 跳到某一新activity传值问题
2 注册界面需要选择性别 需要打开一个新的界面选择里面的信息回到当前activty的传值问题
3 设置界面需要某一界面选择的图片(但是还没上传服务),如果中间相隔几种activty时的传值。
一 如果是两个相邻activity之间的传值:
可以用Intent传值 对象和单个属性都可以
OneActivity 里设置
Intent intent = new Intent(OneActivity.this,TwoActivity.class); intent.putExtra("mEmail", mEmail); intent.putExtra("mPassword", mPassword); startActivity(intent);
TwoActivity 里取值
Intent getIntent = getIntent(); String mEmail = getIntent.getStringExtra("mEmail"); String mPassword = getIntent.getStringExtra("mPassword");
二:相邻两个以上的activty之间的传值
public class Constant { public static String mEmail; public static String mPassword; }
OneActivity :
Intent intent = new Intent(OneActivity.this,TwoActivity.class); /*intent.putExtra("mEmail", mEmail); intent.putExtra("mPassword", mPassword);*/ Constant.mEmail = mEmail; Constant.mPassword =mPassword; startActivity(intent);
这样我们在其他activty里随时可以取值,不受activity的限制
String mEmail = Constant.mEmail; String mPassword = Constant.mPassword; mEmailView.setText(mEmail); mPasswordView.setText(mPassword);