activity理解

1.Activity简介

Activity,释义为活动,在Android系统上体现为一个个页面,属于MVC中的V,即VIEW,用于展示界面。Activity是四大组件之一,与用户密切相关,是用户最直观的体会,是一个与用户交互的组件,可以通过setContentView()来设置要引入展示的界面。

2.activity组成

Activityz由代码和布局组成。代码主要是引入xml布局界面,findVIewById找到控件,然后利用代码设置数据或者改变展现形式;

mTransTo = (FlowListBean) getIntent().getSerializableExtra("account_info");
title_left = (TextView) findViewById(R.id.title_left);
title_name = (TextView) findViewById(R.id.title_name);

布局在Android中主要体现为xml文件,xml是布局文件,科技将设计好的界面通过控件的排布达到展示的效果,同时可以在编辑器中查看修改,这里体现了解耦的思想,将代码和布局解耦,使得代码中不会都是布局的代码,在原来的java中,new 出一个按钮等等,选择防止位置等等,都是通过代码实现的,使得代码杂乱无章,阅读和维护的成本都增加,这样的方式无疑是一种巨大的进步。


1.xml布局如上图


3.xml中几种比较常用的布局

1.LinearLayout ,线性布局,顾名思义,像线一样直,所以一样要设置方向orientation,有horizontal和vertical,方向为横向的时候则是横着一排,方向为竖向的时候则是竖着一排,并且是安排先后顺序来决定谁在前谁在后的,可以不需要设置id,也能展示,但是可以在代码中就没法找到相关的控件了,如果是固定展示就可以不设置id也没问题。另外一个值得一提的是当设置方向为horizontal的时候,可以设置线性布局里面竖直方向上的位置,但是横向的位置就没效果了,例如android:layout_gravity="center_vertical"设置这个则有效果,而如果是android:layout_gravity="center_horizontal",就没什么效果了;如果是设置vertical,则是相对横向反过来

2.RelativeLayout ,相对布局,没一个都需要设置id,因为是相对的,你需要根据id来确定没一个控制,才能设置谁相对谁的位置,例如:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="@dimen/all_atymargin_left_right"
    android:layout_marginRight="@dimen/all_atymargin_left_right"
    android:orientation="horizontal">
    <!--<TextView-->
    <!--android:id="@+id/login_username"-->
    <!--android:layout_width="wrap_content"-->
    <!--android:layout_height="wrap_content"-->
    <!--android:layout_centerVertical="true"-->
    <!--android:padding="5dp"-->
    <!--android:textSize="18sp"-->
    <!--android:text="@string/loginaty_username"/>-->
    <ImageView
        android:id="@+id/login_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:padding="5dp"
        android:src="@mipmap/login_aty_user" />

    <ImageView
        android:id="@+id/login_more"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:clickable="true"
        android:onClick="onClickEvent"
        android:padding="@dimen/dp_10"
        android:src="@mipmap/more" />

    <EditText
        android:id="@+id/login_username_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_toLeftOf="@id/login_more"
        android:layout_toRightOf="@id/login_username"
        android:background="@drawable/edit_bg"
        android:hint="@string/loginaty_username_hint"
        android:maxLength="11"
        android:padding="5dp"
        android:textColorHint="#60000000"
        android:textSize="@dimen/loginaty_content_size" />

    <TextView
        android:id="@+id/loginaty_username_line"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="37dp"
        android:background="@color/line_color"
        android:visibility="gone" />
</RelativeLayout>

相对布局的优势在于布局层级会大大降低。

3.FramLayout ,帧布局

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="100dp">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_gravity="bottom|center"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center"
        android:text="我试试"/>
</FrameLayout>
帧布局多用于控件重叠,比较好用

4.TableLayout,表格布局,可以得到类似表格的界面

4.Activity跳转方式

1.按类别进行跳转

public class SkipActivityUtils {
   /**
    * 用于Activity的跳转
    * 
    * @param mActivity
    *            原Activity
    * @param mClass
    *            待跳转Activity
    */
   public static void skipActivity(Activity mActivity, Class mClass) {
      Intent intent = new Intent(mActivity, mClass);
      mActivity.startActivity(intent);
   }

   /**
    * 用于Activity的跳转,带请求码
    * 
    * @param mActivity
    *            原Activity
    * @param mClass
    *            待跳转Activity
    */
   public static void skipActivity(Activity mActivity, Class mClass, int requestCode) {
      Intent intent = new Intent(mActivity, mClass);
      mActivity.startActivityForResult(intent, requestCode);
   }

   /**
    * 用于Activity的跳转
    * 
    * @param mActivity
    *            原Activity
    * @param mClass
    *            待跳转Activity
    */
   public static void skipActivityWithData(Activity mActivity, Class mClass, Bundle mBundle) {
      Intent intent = new Intent(mActivity, mClass);
      intent.putExtras(mBundle);
      mActivity.startActivity(intent);
   }

   /**
    * 用于Activity的跳转,带参数,带请求码
    * 
    * @param mActivity
    *            原Activity
    * @param mClass
    *            待跳转Activity
    */
   public static void skipActivityWithData(Activity mActivity, Class mClass, Bundle mBundle, int requestCode) {
      Intent intent = new Intent(mActivity, mClass);
      intent.putExtras(mBundle);
      mActivity.startActivityForResult(intent, requestCode);
      ;
   }
}
2.按action跳转


代码中:

Intent i = new Intent("zxg.test"); 
    this.startActivity(i); 

清单文件中:
 <activity android:name="com.android.dialog.MyDialog"> 
         <intent-filter> 
	<!--配置action路径--> 
            <action android:name="zxg.test" /> 
            <category android:name="android.intent.category.DEFAULT" /> 
         </intent-filter> 
       </activity> 

3.uri转化,多数人系统规定类型跳转

/**
* 拨打电话
*/
public static void callDial(Context context, String phoneNumber) {
    context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)));
}
/**
* 发送短信
*/
public static void sendSms(Context context, String phoneNumber, String content) {
    Uri uri = Uri.parse("smsto:" + (TextUtils.isEmpty(phoneNumber) ? "" : phoneNumber));
    Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    intent.putExtra("sms_body", TextUtils.isEmpty(content) ? "" : content);
    context.startActivity(intent);
}
/**
 * 安装指定路径下的Apk
 */
public static void installApk(String filePath, Context mActivity) {
   Intent installIntent = new Intent();
   installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   installIntent.setAction(Intent.ACTION_VIEW);
   installIntent.setDataAndType(Uri.fromFile(new File(filePath)), "application/vnd.android.package-archive");
   mActivity.startActivity(installIntent);
}
//跳转网页
 Uri uri = Uri.parse("http://www.baidu.com");
 Intent it = new Intent(Intent.ACTION_VIEW, uri);
 startActivity(it);

等等


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值