返回顶部
首页 > 资讯 > 移动开发 >第一行代码—Android第二版学习笔记
  • 313
分享到

第一行代码—Android第二版学习笔记

第一行代码学习笔记学习Android 2022-06-06 13:06:50 313人浏览 泡泡鱼
摘要

Android 第一行代码学习笔记第一章 概述1.1安卓系统架构1.2Android四大组件1.3项目结构1.4app目录结构1.5 项目运行原

Android 第一行代码学习笔记第一章 概述1.1安卓系统架构1.2Android四大组件1.3项目结构1.4app目录结构1.5 项目运行原理1.6 res目录详解1.7日志工具的使用第二章 活动2.1 创建基本活动2.2 使用Intent在活动之间跳转2.2.1使用显示和隐式Intent2.2.2隐式Intent的更多用法2.2.3互动间传递数据 第一章 概述 1.1安卓系统架构

Android系统是基于linux内核的,大致可以分为四层架构:Linux内核层、系统运行库层、应用框架层、应用层。
1.Linux内核层:为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、等
2.系统运行库层:通过一些C/C++库来为Android系统提供了主要的特性支持。同时这一层还有Android运行时库,主要提供了一些核心库,能够允许开发者使用Java语言编写Android应用。同时还包含了Dalvik虚拟机(5.0后改为ART运行环境,专门为移动设备定制的)
3.应用框架层:主要提供了构建应用程序时可能用到的各种api
4.应用层:所有安装再手机上的应用程序都是属于这一层

1.2Android四大组件

分别是活动、服务、广播接收器、内容提供器

1、活动:是所有Android应用程序的门面,应用中能看到的东西都是放在活动中的
2、服务:在后台运行,即使用户退出应用,服务仍然是可以继续运行
3、广播接收器:允许应用接收和发送广播消息
4、内容提供器实现:应用程序之间共享数据

1.3项目结构

//以上两行表示FirstActivity是该项目的主活动

FirstActivity.java

public class FirstActivity extends AppCompatActivity {
	//活动创建时必定要执行的方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);//引入布局
    }
}

first_layout.xml


    
1.6 res目录详解

1.res目录

AndroidManifest.xml对应修改部分


                

2、创建带menu的活动
在res中创建menu文件夹,再创建main.xml




item标签创建具体的菜单项,再指定标识符与名称
FirstActivity.java修改部分

@Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main,menu);//getMenuInflater能创建MenuInflater对象和调用inflate方法为当前活动创建菜单,参数一表示通过哪一个资源文件创建菜单、参数二指定菜单项所要传入的Menu对象
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        //设置菜单响应事件
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(this,"you clicked add",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this,"you clicked remove", Toast.LENGTH_LONG).show();
                break;
            default:
        }
        return true;
    }

tips:使用ctrl+o可以显示可覆盖的方法列表

2.2 使用Intent在活动之间跳转 2.2.1使用显示和隐式Intent

1.使用显示Intent
首先创建第二个活动,命名为SecondActivity
然后更改FirstActivity的覆盖方法

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);  
                startActivity(intent);
            }
        });
    }

2.使用隐式Intent
修改AndroidManifest.xml


每个Intent只能指定一个action,可以指定多个cateGory
修改FirstActivity.java文件

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.activitytest.ACTION_START");
                intent.addCategory("com.example.activitytest.MY_CATEGORY");//如果没有增加自定义的category,则不需要添加此行代码
                startActivity(intent);
            }
        });
    }
2.2.2隐式Intent的更多用法

eg.调用系统内置动作

FirstActivity.java
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("Http://www.baidu.com"));
                startActivity(intent);
        });
    }

此处还可以自定义Intent响应事件,使得程序显示多个相应活动

2.2.3互动间传递数据

1.向下一个活动传递数据
修改FirstActivity.java如下

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data = "Hello SecondActivity";
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                intent.putExtra("extra_data",data);
                startActivity(intent);
            }
        });
    }

修改SecondActivity.java来获取数据

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra_data");
        Log.d(TAG, data);
    }

2、返回数据给上一个活动
修改FirstActivity.java如下

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button) findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                startActivityForResult(intent,1);
            }
        });
    }
 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    String returnData = data.getStringExtra("data_return");
                    Log.d(TAG, returnData);
                }
                break;
            default:
        }
    }

修改SecondActivity如下

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        Button button2 = (Button) findViewById(R.id.button_2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("data_return","Hello FirstActivity");
                setResult(RESULT_OK,intent);
                finish();//用于销毁当前活动
            }
        });
    }
@Override
	//修改此方法使得与按下Back回到活动一保持一致
    public void onBackPressed() {
        Intent intent = new Intent();
        intent.putExtra("data_return","Hello FirstActivity");
        setResult(RESULT_OK,intent);
        finish();
    }

作者:sky_2816


--结束END--

本文标题: 第一行代码—Android第二版学习笔记

本文链接: https://lsjlt.com/news/29428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作