《第一行代码》笔记

《第一行代码》笔记
因为比赛项目要做语音识别的原因,从上个月中旬才正式开始学android,中间又兜兜转转地重
看了java,看了android的教学视频,一头雾水,分不清主次,又自己动手解决做个小app的问题,
从UI到调用包,自己也是仿照着写了一部分,但是还是很不清晰。直到前两天看了《第一行代码》
才有了清晰的认识,打算将自己这两天觉得重要的知识点记录下来,避免忘记。
今天要将《第一行代码》学到UI部分结束,估摸着明天就可以开始打一打工程文件的调用,这部分
我确实是非常地不熟,并且在我之前基础不扎实的时候看得是云里雾里。
今天是520了,笑,( ̄▽ ̄),爱她呀。因为疫情,不能回学校不能去找她,实在是太烦恼了。
祝各位看官有情人终成眷属吧!

在project下看项目文件夹

在这里插入图片描述
在project的状态栏目下我们只需要关注app这个文件夹,我们的代码和资源都是在这里面的
1. build
这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件,不过它
里面的内容会更多更杂,我们不需要过多关心。
2. libs .
如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs 目录下,放在这个目
录下的jar包都会被自动添加到构建路径里去。
3. androidTest
此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
4. java
毫无疑问,java 目录是放置我们所有Java代码的地方,展开该目录,你将看到我们刚才创建
的HelloWorldActivity文件就在里面。
5. res
这个目录下的内容就有点多了。简单点说,就是你在项目中使用到的所有图片、布局、字符
串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,
布局放在layout目录下,字符串(比如strings.xml)放在values目录下,所以你不用担心会把整个
res目录弄得乱糟糟的。
6. AndroidManifest.xml
这是你整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里
注册,另外还可以在这个文件中给应用程序添加权限声明。由于这个文件以后会经常用到,我们
用到的时候再做详细说明。
7. test
此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
8. .gitignore
这个文件用于将app 模块内的指定的目录或文件排除在版本控制之外,作用和外层
的.gitignore文件类似。
9. app.iml
IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。
10. build.gradle
这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置,我们稍后将
会详细分析gradle构建脚本中的具体内容。
11. proguard-rules.pro
这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代
码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。
res目录:
看到这么多的文件夹也不用害怕,其实归纳—下,res目录就变得非常简单了。所有以drawable
开头的文件夹都是用来放图片的,所有以mipmap开头的文件夹都是用来放应用图标的,所有以
values开头的文件夹(string)都是用来放字符串、样式、颜色等配置的,layout 文件夹是用来放
布局文件的。

调用string中的字符串

    strings.xml 中找到的 app_name定义的字符串,我们有两种方式可以引用它:
            1. 在代码中通过 R.string.app_name 可以获得该字符串的引用;
            2. 在 XML 中通过@string/app_name 可以获得该字符串的引用。
   基本的语法就是上面这两种方式,其中string部分是可以替换的,如果是引用的图片资源
   就可以替换成drawable,如果是引用的应用图标就可以替换成mipmap,如果是引用的布局文件
   就可以替换成layout,以此类推。

Mainactivity.java文件的笔记

package com.example.my_last_test;                //声明包名为com.example.my_last_test

import android.support.v7.app.AppCompatActivity;   //导入父类的包中的类AppCompatActivity
import android.os.Bundle;                      //导入父类的包
import android.util.Log;
public class LastTestActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState)     //onCreate()方法是一个活动被创建时必定要执行的方法
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.last_test_layout);        //给当前活动加载一个布局,每一个文件都会在layout中生成一个对应的id
        Log.d("LastTestActivity","onCreate execute");     //打印日志出“onCreate execute”
    }
}

AndroidMainIfest.xml文件的笔记


    //程序的四大组件在这里注册,分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(Content Provider)


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        //引用string中的app_name
        //项目的应用的名称是label属性来定义的,应用图标是icon
        <activity android:name=".LastTestActivity" >//表示对 LastTestActivity 这个活动进行注册,没有在 AndroidManifest.xml 里
                                                     // 注册的活动是不能使用的
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />           //LastTestActivity是这个项目的主活动
                <category android:name="android.intent.category.LAUNCHER" />   //点击应用图标,首先启动的就是这个活动。LAUNCHER 即 入口
            </intent-filter>

        </activity>

    </application>

</manifest>

buid.gradle(app)的配置问题(重要)

这个版本相关问题曾经搞得我焦头烂额,还是把该记的记下来,毕竟因为环境配置因素而耽误时间,
是一件非常低智而又蹉跎光阴的事情。

apply plugin: 'com.android.application'

//首先第一行“apply plugin: 'com.android.application'”应用了一个插件,一般有两种值可选: com. android . application表示这是一个应用程序模块,
//com. android. library表示这是一个库模块。应用程序模块和库模块的最大区别在于,一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块来运行。



android {
    compileSdkVersion 25             //SDK_Tools的版本
    buildToolsVersion "29.0.3"       //build_tools 的版本
    defaultConfig {
        applicationId "com.example.my_last_test"     //项目的包名
        minSdkVersion 14
        targetSdkVersion 25                 //一般跟SDK_Tools的版本相同
        versionCode 1                   //指定项目的版本号
        versionName "1.0"                 //指定项目的版本名
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

//    release闭包用于指定生成正式版安装文件的配置,minifyEnabled用于指定是否对项目的代码进行混淆


    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
//dependencies指定当前项目所有的依赖关系

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])   //本地依赖lib下的jar
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.+'      //库依赖 版本一般跟SDK_Tools的版本相同
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
}




layout.xml文件笔记

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    //如果你需要在XML中引用一个id,就使用@id/id_ name 这种语法,而如果你需要在XML中定义一
    //个id,则要使用@+id/id_ name 这种语法。
   // match_ parent 表示让当前元素和父元素一样宽。
   // wrap_content表示当前元素的高度只要能刚好包含里面的内容就行。


    <Button
        android:id="@+id/btn_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="本初1号"


        />


</LinearLayout>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值