Android Studio 笔记(一)------知识点

初学Android Studio,慢慢摸索,记录一些知识点,免得现在测试的文件删了以后找不到。

--------------------------------------知识点---------------------------------------

1.android studio几大文件关系及作用

activity_main.xml      MainActivity.java      AndroidManifest.xml

activity(活动),简单理解就是手机的一个页面。

--activity_main.xml 在layout里,主要保存一个activity的样式。

--MainActivity.java是程序运行的主代码区,这里可以引入activity_main.xml中声明的控件button等,也可以通过intent(意图)

向其他activity申请实现活动之间的交互,也就是手机页面的跳转,通过AndroidManifest.xml里面intent-filter过滤器的筛选看是哪个别的activity进行响应处理,也就是跳转到哪个页面。

--AndroidManifest.xml储存本项目的活动及其对应响应处理方式。

 

2.intent属性component、action、data、category、extras、flags

----component是显式intent的组件,被传递的目标组件,可以在new intent时在构造函数里声明,也可以通过方法setComponentName();setClass();setClassName();

----action表示执行操作的字符串,表明该活动可以响应哪个intent意图,常量ACTION_VIEW展示信息(浏览器),--ACTION_SEND信息分享到其他应用,ACTION_DIAL拨号,ACTION_EDIT编辑;配套常量可以有setData()设置数据引用的uri,setType()设置可处理的mime类型的uri。

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://baidu.com"));
startActivity(intent);

----category是对intent的补充,在隐式intent中与action配套出现,必须同时匹配才能被本activity活动响应。方法addCategory().

<intent-filter>
    <action android:name="StartSecondActivity" /> <!-- 标明活动2可以响应哪个action -->
    <category android:name="android.intent.category.DEFAULT" /> <!-- 这里必须有 -->
    <category android:name="intent2" />
    <!-- DEFAULT是startActivity(intent)无定义category时默认调用的,必须有 -->
</intent-filter>

注:隐式intent的category的DEFAULT必须有。

----extras储存额外信息,对应方法putExtra();

//一个activity传输数据:

Intent intent=new Intent("StartSecondActivity");
intent.addCategory("intent2");
intent.putExtra("extra_data","this is a message");//传送额外数据

//另一个activity中数据接收:
Intent intent=getIntent();//也可以判断intent收到的是哪个action来做出不同的处理
if(intent.getAction()=="StartSecondActivity")
    Log.d("SecondActivity",intent.getStringExtra("extra_data"));

注:如果是别的不带有action或者data的intent被接收端活动响应则会报错No Activity found to handle intent...等。

----flags指示系统如何启动一个Activity,,暂时没用到。。

参考链接:http://blog.csdn.net/xiaohanluo/article/details/52637520

 

3.startActivityForResult()与setResult()

//Activity1:

Button button_intent_code=(Button)findViewById(R.id.button_intent_code);
button_intent_code.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent=new Intent(MainActivity.this,SecondActivity.class);
        startActivityForResult(intent,3);
        //这里用startActivityForResult启动活动2;
        //请求码(int)是唯一值即可,便于判断活动1收回的resultCode是基于哪个活动的
        //活动1给活动2一个请求码requestCode,活动2销毁后返回给活动1一个resultCode,
    }
});

//接上文,因startActivityForResult,活动2销毁后会自动返回活动1,
// 然后重调上一个活动即活动1的onActivityResult()方法,因此此方法需要重写;
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    switch(requestCode){
        case 3:
            if(resultCode==RESULT_OK)
                Log.d("MainActivity",data.getStringExtra("data_return"));
    }
}


//Activity2:

Button button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intentR=new Intent();//这里的intent仅是为了传输数据
        intentR.putExtra("data_return","this is a feedback");
        setResult(RESULT_OK,intentR);//setResult()方法专门向上一个活动传输数据,RESULT_OK/RESULT_CANCELED
        finish();//销毁本活动
    }
});

注:如果一个activity中有多次用到intent,注意不要重名。

 

4.六大布局简述

(1)RelativeLayout相对布局
         android:layout_toRightOf="@id/button1" //移到button1的右边    

         android:layout_alignBottom="@id/button1"

         android:layout_marginBottom="100dp"   //距离原来的底部100dp(相当于上移)
         //android:visibility="visible" 

(2)LinearLayout线性布局 
         横着排列下去的流式布局

(3)TableLayout表格布局

<TableRow       

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tableRow2">
        <Button
           android:id="@+id/button3"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Button3"
           android:layout_column="1" />  <!--column是这一行的某一列--> 
</TableRow>  <!--TableRow创建一行-->

(4)GridLayout网格布局
<GridLayout 
        android:layout_gravity="center"
        android:columnCount="4"
        android:orientation="horizontal"> <!--这些就横着一行一行填充,每行4格-->
        <Button
           android:layout_column="3"
           android:text="/" />        <!--定位到第四栏(从0开始0 1 2 3栏)-->
           android:layout_rowSpan="3"/>      <!--  填充三列   -->
       <Button
           android:text="1" />
       <Button
           android:text="2" />


(5)FrameLayout帧布局

        暂时没用到。。。

  ##AbsoluteLayout绝对布局(划掉,新版本不支持)
        android:layout_y="50dp"
        android:layout_x="50dp"//绝对位置

(6)ConstraintLayout约束布局
        layout_constraintTop_toTopOf    // 将所需视图的顶部与另一个视图的顶部对齐。 
        layout_constraintTop_toBottomOf  // 将所需视图的顶部与另一个视图的底部对齐。 
        app:layout_constraintDimensionRatio="4:3"//定宽高比

参考链接:https://blog.csdn.net/huanhuan59/article/details/80081159

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值