知识库

wiki.linsakura.com

用户工具

站点工具


wiki:book:notes:android:第一行代码-android-第2版-郭霖

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
wiki:book:notes:android:第一行代码-android-第2版-郭霖 [2022/04/06 11:23]
博丽幻月 [第1章 开始启程——你的第一行Android代码]
— (当前版本)
行 1: 行 1:
-====== 第一行代码:Android(第2版) - 郭霖 读书笔记 ====== 
-===== 第1章 开始启程——你的第一行Android代码 ===== 
-**Android四层架构**\\ Linux内核层、系统运行库层、应用框架层、应用层。\\ 
----- 
-**系统运行库层**\\ C/C++库为Android系统提供了主要的特性支持,Java语言编写Android应用。包含Dalvik虚拟机。\\ 
----- 
-**ART运行环境**\\ Android5.0,使用ART运行环境替代了Dalvik虚拟机。\\ 
----- 
-**四大组件**\\ 活动、服务、广播接收器、内容提供器。(Activity、Service、Broadcast Receiver、Content Provider)。\\ 
----- 
-**res目录**\\ 
-  * drawable - 图片 
-  * layout - 布局 
-  * values - 字符串 
----- 
-**AndroidManifest.xml**\\ 整个安卓项目的**配置文件**,四大组件都需要在这个文件里**注册**,另外还可以在这个文件中给应用程序**添加权限声明**。\\ 
----- 
-**主活动,首先启动的活动**\\ 
-<code java> 
-<action android:name="android.intent.action.MAIN" /> 
-<category android:name="android.intent.category.LAUNCHER" /> 
-</code> 
-上面两句表示这个Activity是此项目主活动,启动应用首先启动的就是这个活动。\\ 
----- 
-**当前活动引入一个布局**\\ 
-<code java> 
-setContentView(R.layout.hello_world_layout);  //引入hello_world_layout布局 
-</code> 
----- 
-**字符串的引用** 
-  - 代码中,通过''R.string.hello_world''可获得该字符串的引用 
-  - XML中,通过''@string/hello_world''可获得该字符串的引用 
----- 
-**build.gradle文件**\\ 
-Android Studio是采用Gradle来**构建项目**的。Gradle是一个非常先进的项目构建工具。\\ 
-dependencies闭包中使用classpath声明了一个Gradle插件,因为Gradle并不是专门为构建Android项目而开发的,因此如果我们要想使用它来构建Android项目,则需要声明''com.android.tools.build:gradle:2.2.0''这个插件。\\ 
----- 
-**app下的build.gradle文件**\\ 
-''com.android.application''表示这是一个应用程序模块,''com.android.library''表示这是一个库模块。\\ 
-**应用程序模块**和**库模块**的最大区别在于,一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块来运行。\\ 
-''minifyEnabled''用于指定是否对项目的**代码进行混淆**。\\ 
-通过Android Studio直接运行项目生成的都是测试版安装文件。\\ 
----- 
-**debug日志**\\ 
-logd,然后按下Tab键,就会帮你自动补全一条完整的打印语句。\\ 
-===== 第2章 先从看得到的入手——探究活动 ===== 
-**活动Activity**\\ 
-主要用于和用户进行交互。\\ 
----- 
-**启动的主活动**\\ 
-在''<activity>''标签的内部加入''<intent-filter>''标签,添加下面两句声明即可:\\ 
-<code xml> 
-<action android:name="android.intent.action.MAIN" /> 
-<category android:name="android.intent.category.LAUNCHER" /> 
-</code> 
----- 
-**通知消息Toast**\\ 
-用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。\\ 
-<code java> 
-Button button1 = (Button) findViewByid(R.id.button_1); 
-button1.setOnClicklistener(new View.OnClicklistener() { 
-    @Override 
-    public void onClick(View v) { 
-        Toast.makeText(FirstActivity.this, "你点击了Button1", Toast.LENGTH_SHORT).show(); 
-    } 
-}); 
-</code> 
-可以通过''findViewById()''获取布局文件中定义的元素。\\ 
-''setOnClicklistener()''方法为按钮注册一个监听器,点击按钮时就会执行监听器中的''onClick()''方法。\\ 
----- 
-**活动中使用Menu**\\ 
-''getMenuinflater()''方法能够得到''Menuinflater''对象,再调用它的''inflate()''方法就可以给当前活动创建菜单。\\ 
----- 
-**销毁一个活动**\\ 
-''finish()''\\ 
----- 
-**Intent交互**\\ 
-Intent是Android程序中各组件之间**进行交互**的一种重要方式,它不仅可以指明当前组件**想要执行的动作**,还可以在不同组件之间**传递数据**。\\ 
-Intent一般可被用于**启动活动**、**启动服务**、**发送广播**等场景。\\ 
-Intent分两种:显示Intent、隐式Intent。\\ 
----- 
-**使用隐式Intent**\\ 
-<code java> 
-intent.addCategory("com.exampte.activitytest.MY_CATEGORY"); 
-</code> 
-<code xml> 
-<activity android:name=".SecondActivity" > 
-    <intent-filter> 
-        <action android:name="com.example.activitytest.ACTION_START" /> 
-        <category android:name="android.intent.category.DEFAULT" /> 
-        <category android:name="com.exampte.activitytest.MY_CATEGORY"/> 
-    </intent-filter> 
-</activity> 
-</code> 
----- 
-**更多隐式Intent用法**\\ 
-不仅可以启动自己程序内的活动,还可以启动其他程序的活动。\\ 
-<code java> 
-//调用系统浏览器打开网页 
-Intent intent = new Intent(Intent.ACTION_VIEW); 
-intent.setData(Uri.parse("http://www.baidu.com")); 
-</code> 
-<code java> 
-//调用系统拨号界面 
-Intent intent = new Intent(Intent.ACTION_DIAL); 
-intent.setData(Uri.parse("tel:18886")); 
-</code> 
----- 
-**向下一个活动传递数据**\\ 
-使用''putExtra()''存放数据到intent:\\ 
-<code java> 
-String data = "Hello SecondActivity"; 
-Intent intent = new Intent{FirstActivity.this, SecondActivity.class); 
-intent.putExtra("extra_data", data); 
-</code> 
-使用''getStringExtra()''获取数据:\\ 
-<code java> 
-Intent intent = getIntent(); 
-String data = intent.getStringExtra("extra_data"); 
-</code> 
----- 
-**返回数据给上一个活动**\\ 
-FirstActivity按钮onClick()中添加:\\ 
-<code java> 
-Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
-startActivityforResult(intent, 1); 
-</code> 
-''startActivityForResult()''方法接收两个参数,第一个参数还是Intent, 第二个参数是**请求码**,用于在之后的**回调中判断数据的来源**。\\ 
-SecondActivity按钮onClick()中添加:\\ 
-<code java> 
-Intent intent = new Intent(); 
-intent.putExtra("data_return", "Hello FirstActivity"); 
-setResult(RESULT_OK, intent); 
-</code> 
-调用了''setResult()''方法。这个方法非常重要,是专门**用于向上一个活动返回数据**的。\\ 
-SecondActivity销毁后,在FirstActivity中判断:\\ 
-<code java> 
-@Override 
-protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
-    switch (requestCode) { 
-    case 1: 
-        if (resultCode == RESULT_OK) { 
-        String returnedData = data.getStringExtra("data_return"); 
-        Log.d("FirstActivity", returnedData); 
-        break; 
-    default: 
-    } 
-} 
-</code> 
-如果使用''Back键''回到FirstActivity,则重写SecondActivity中的''onBackPressed()''方法即可。\\ 
----- 
-**TBD***\\ 
-===== 第5章 全局大喇叭——详解广播机制 ===== 
- 
- 
- 
  
wiki/book/notes/android/第一行代码-android-第2版-郭霖.1649215409.txt.gz · 最后更改: 2022/04/06 11:23 由 博丽幻月