• Android 工程目录


    app

    • java:我们写Java代码的地方,业务功能都在这里实现
    • res:存放我们各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件

    Gradle Scripts

    1.res资源文件夹介绍:

    PS:说到这个res目录,另外还有提下这个assets目录,虽然这里没有,但是我们可以自己创建,两者的区别在于是否前者下所有的资源文件都会在R.java文件下生成对应的资源id,而后者并不会;后者需要通过AssetManager以二进制流的形式来读取!这个R文件可以理解为字典,res下每个资源都都会在这里生成一个唯一的id!

    res资源目录下的相关目录:

    1.图片资源:

    • drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件
    • mipmap-hdpi:高分辨率,一般我们把图片丢这里
    • mipmap-mdpi:中等分辨率,很少,除非兼容的的手机很旧
    • mipmap-xhdpi:超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡
    • mipmap-xxhdpi:超超高分辨率,这个在高端机上有所体现

    2.布局资源:

    • layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!

    3.菜单资源

    4.values目录:

    • demens.xml:定义尺寸资源
    • string.xml:定义字符串资源
    • styles.xml:定义样式资源
    • colors.xml:定义颜色资源
    • arrays.xml:定义数组资源
    • attrs.xml:自定义控件时用的较多,自定义控件的属性!
    • theme主题文件,和styles很相似,但是会对整个应用中的Actvitiy或指定Activity起作用,一般是改变窗口外观的!可在Java代码中通过setTheme使用,或者在Androidmanifest.xml中为<application...>添加theme的属性! PS:你可能看到过这样的values目录:values-w820dp,values-v11等,前者w代表平板设备,820dp代表屏幕宽度;而v11这样代表在API(11),即android 3.0后才会用到的!

    5.raw目录: 用于存放各种原生资源(音频,视频,一些XML文件等),我们可以通过openRawResource(int id)来获得资源的二进制流!其实和Assets差不多,不过这里面的资源会在R文件那里生成一个资源id而已

    6.最后还有个动画的,动画有两种:属性动画和补间动画:

    • animator:存放属性动画的XML文件
    • anim:存放补间动画的XML文件

    2.如何去使用这些资源

    所有的资源文件都会在R.java文件下生成一个资源id,可以通过这个资源id来完成资源的访问,使用情况有两种:Java代码中使用和XML代码中使用。

    Java代码中使用:

    Java 文字:txtName.setText(getResources().getText(R.string.name));

    图片:imgIcon.setBackgroundDrawableResource(R.drawable.icon);

    颜色:txtName.setTextColor(getResouces().getColor(R.color.red));

    布局:setContentView(R.layout.main);

    控件:txtName = (TextView)findViewById(R.id.txt_name);

    XML代码中使用:

    通过@xxx即可得到,比如这里获取文本和图片:

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background = "@drawable/img_back"/>

    2.深入了解三个文件:

    工程里三个重要文件: MainActivity.java,布局文件:activity_main和Android配置文件:AndroidManifest.xml 

    MainActivity.java:

    代码如下

    package jay.com.example.firstapp;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

    代码分析:

    布局文件:activity_main.xml:

    代码如下:(需点击界面左下方的Text)

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
    </RelativeLayout>

    代码分析:

    我们定义了一个LinearLayout线性布局,在xml命名空间中定义我们所需要使用的架构,来自于①

    AndroidManifest.xml配置文件:

    代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="jay.com.example.firstapp" >
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    代码分析:

    除了上述内容外:

    ①如果app包含其他组件的话,都要使用类型说明语法在该文件中进行声明 Server:元素 BroadcastReceiver元素 ContentProvider元素 IntentFilter<intent-filter>元素

    ②权限的声明: 在该文件中显式地声明程序需要的权限,防止app错误地使用服务, 不恰当地访问 资源,最终提高android app的健壮性 android.permission.SEND_SMS 有这句话表示app需要使用发送信息的权限,安装的时候就会提示用户, 相关权限可以在sdk参考手册查找!


    资源整理自:http://www.runoob.com/w3cnote/android-tutorial-project-src-analysis.html
  • 相关阅读:
    想做的事情
    js学习笔记2(5章操作方法)
    js学习笔记1(变量、作用域、内存)
    输入框去除默认的文字,jquery方法
    同类型元素,只有一个被选中js
    淘宝分类常见---部分显示和全部显示的js效果
    关于游戏提名信息项目的总结
    20174310隋润起网络对抗免考报告
    2019-2020-2 20174310 隋润起《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20174310隋润起《网络对抗技术》Exp8 Web基础
  • 原文地址:https://www.cnblogs.com/Baron-Lu/p/7097851.html
Copyright © 2020-2023  润新知