精华内容
下载资源
问答
  • Android Studio入门

    2016-03-03 20:31:16
    请看大神的博客:Android Studio入门到精通 - 工匠若水 - 博客频道 - CSDN.NET http://blog.csdn.net/yanbober/article/details/45306483

    请看大神的博客:

    Android Studio入门到精通 - 工匠若水 - 博客频道 - CSDN.NET http://blog.csdn.net/yanbober/article/details/45306483

    下载地址:http://www.androiddevtools.cn/

    下载studio
    下载sdk

    运行studio里bin里的exe程序
    自定义界面风格
    更改sdk路径
    取消sdk下载安装
    Configure-Settings

    展开全文
  • android Studio入门

    2016-03-01 17:40:14
    android studioandroid应用开发神器,本资料对新手有很好的学习作用
  • Android Studio 入门

    千次阅读 2016-04-10 16:58:51
    本文适用于从Eclipse转AndroidStudio的开发者 最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,这是本系列的第一篇文章,...
    本文适用于从Eclipse转AndroidStudio的开发者
    

    最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,这是本系列的第一篇文章,345大神写的。

    原文地址

    一. 下载安装

    1. JDK安装并配置JAVA_HOME环境变量

      这个就略过了,纯小白请自行百度
      
    2. Android Studio安装

      截止到2016年4月9日Android studio的最新稳定版本为2.0,推荐使用该稳定版本。
      

    下载地址:

    • 下载地址1 官网下载页面传送门

      如果下载速度很慢,请复制下载连接到迅雷,万能的迅雷会帮你提速的。
      如果根本打不开请移步地址2
      
    • 下载地址2 AndroidDevTools
      AndroidDevTools下载

      你需要的这里基本都会有,强烈推荐到这里下载。
      如果本地已经下载有sdk的话推荐下载zip免安装版,第一次启动的时候配置下sdk目录就好。

    二. 第一次启动

    1. 安装完过后不要着急启动,首次启动会弹出检查sdk更新组件等设置,点击finish可能会去下载,如果没有设置代理的情况下,这个界面会卡很久。

    解决方法

    • 关闭android sutdio,打开android studio安装目录下的bin文件夹,找到idea.properties并打开。
    • 在该文件尾部添加如下代码:
    # 禁用首次检查sdk功能
    disable.android.first.run=true
    • 重启android studio就不会再出现sdk设置检查界面了。

      1. 启动完成会看到下面的界面
        启动页面

    点击Configure选择SDK Manger可以配置SDK目录等属性
    SDK 配置
    SDK setting

    点击左下角连接 启动SDK Manger 配置SDK更新镜像
    我想说这一步在天朝是必须的,原因我想你懂的

    下面说一下SDK更新镜像网站的使用方法:
    具体请参考AndroidDevTools
    1. 启动 Android SDK Manager ,打开主界面,依次选择『Tools』、『Options…』,弹出『Android SDK Manager - Settings』窗口;

    1. 在『Android SDK Manager - Settings』窗口中,在『HTTP Proxy Server』和『HTTP Proxy Port』输入框内填入上面镜像服务器地址(不包含http://,如下图)和端口,并且选中『Force https://… sources to be fetched using http://…』复选框。设置完成后单击『Close』按钮关闭『Android SDK Manager - Settings』窗口返回到主界面;

    2. 依次选择『Packages』、『Reload』。
      SDK镜像源

      选择镜像网站的时候要注意的是,并不是所有的适合别人的就适合你还有可能根本无法更新,由于服务器远近带宽的问题,你应该选择适合自己的镜像,怎么选择。。。。我想说设置成功后选择更新个没下载的文件能成功下载更新并且速度不慢的就是合适的
      
    3. 主题设置

    这个没什么好讲的,但是追求逼格喜欢黑色主题的小伙伴在意这个的不少,这里就上图说明一下。
    启动页面点击 configure->选择Prefrences->Appearance->Theme->Darcula就是那个黑色Visual Studio风格主题 ->apply完事
    enter description here

    如果想要更多字体关键词颜色什么的个性化配置的话推荐到下面的网址下载
    http://color-themes.com/?view=index
    选择喜欢的主题下载,下载到的是个jar文件,使用方法:

        在AS中选择File->import settings ->选择下载的jar文件->勾选editor color 确认
    

    三. 项目工程

    1. 新建工程

    跟着引导一步步来就好了,注意最低兼容版本的选择,新建项目的时候没有提供编译版本的选项,默认当前安装的sdk的最高版本,AS给提供了几个Activity模版,模版的实现都是比较经典的,推荐新建一个看一看。
    enter description here

    1. 工程目录结构
      enter description here

    新建完一个工程 如图点击左上结构视图切换,切换到Project目录结构(开发中常用的是Android视图,比较简洁) 其中 app2和mylibrary是为了方便后面讲解新建完成后手动添加的module默认新建工程是没有的。

    • MyApplication文件夹地位相当Eclipse的Workspace

      不同的是AS工程目录下面多了用于全局项目的配置文件,比较重要的是local.properties、setting.gradle、gradle.properties 、build.gradle和gradle文件夹
      
      • local.properties
        其中可以设置你的 sdk、ndk配置,一般情况下不需要改
      • settings.gradle
        该文件中就仅仅只包含了一句话,声明所包含的module
        比如上面的工程包含三个module

        include ':app', ':app2', ':mylibrary'
      • gradle.properties
        gradle编译用到的一些参数设置 一般情况下不需要改
      • buiLd.gradle
        定义版本仓库的依赖和一些gradle的命令一般情况下不需要改
    • Module目录
      enter description here

      这个目录跟eclipse目录很像 很容易就能理解各种目录的对应关系,比较特别的是比eclipse多了一系列mipmap文件夹,mipmap和drawable文件夹一样都是用来存放图片的,按官方文档说法是 mipmap文件夹只放应用图标。其他需要使用的drawable资源象之前一样放到对应的drawable文件夹。

      新建moudle时drawable文件夹只有默认不带分辨率参数的,适用于不同分辨率的文件夹需要自己手动建,AS提供了便捷的创建方式

      在moudle上右键选择Android resource directory,分别选择类型drawable 左侧列表选择density 选择对dpi
      如下图
      enter description here
      enter description here
      enter description here
      其他res文件的创建同理。

      1. 打开网上下载AS工程gradle报错的问题

    有时候我们从网上下载了一个demo工程打开后gradle报错不能运行,这种情况大多数由于gradle版本不一致,AS下载对应版本失败的问题引起的,一般情况下有两种解决方法
    * 手动下载对应gradle版本到本地目录

        这种方式不推荐有兴趣的自行搜索
    

    * 修改要打开工程的gradle配置
    enter description here

    参考本地新建工程的相同文件
    gradle-wrapper.properties

    distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
    //修改版本号与本地工程文件相同

    build.gradle

    dependencies {
            classpath 'com.android.tools.build:gradle:2.0.0'
            //修改版本号与本地工程文件相同
    }

    四. 添加依赖

    了解了项目结构之后简单的编译运行调试一般来说应该没有什么问题了,毕竟菜单栏,底部功能窗口功能提示都很明确,下面来说一说比较遇到问题的地方:添加依赖项目或运行第三方工程报错的问题。

    添加依赖一般有三种方式
    1. 添加代码仓库的依赖

    这种方式最简单直接在项目module的build.gradle 里面的dependencies 里添加一句话,然后重新构建即可,如:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile 'com.android.support:design:23.3.0'
        //添加了OKHttp的依赖
        compile 'com.squareup.okhttp3:okhttp:3.2.0'
    }

    可以手动添加也可以右键项目在open module settings里搜索添加(推荐这种方式)
    open module settings
    open module settings

    AS会自动联网下载添加的依赖 这个一般不需要翻墙
    
    1. jar包的依赖

    这个是最简单的也不用联网,和eclipse一样把jar包拷贝到libs文件夹内,然后需要重新构建一下项目 点击菜单栏的构建按钮即可如图
    enter description here
    构建完成在左侧目录栏里的jar文件左侧应该会有尖头可以展开查看jar包内容
    enter description here

    有的jar还需要关联.so库 这时候只需要在src目录的main文件夹下面建一个名为jniLibs的文件夹将so库拷贝进去即可(与res目录同级)
    enter description here
    3. libray项目的依赖

    很多时候我们的要用到从github上下载的项目,把其中提供的library添加到我们的项目中,方法如下 首先导入module然后添加依赖
    打开project structure -> 添加新moudle ->在下载的工程文件中 选择要导入的library的module
    注意不是导入下载的整个工程文件夹 而是选择其中的module文件夹
    enter description here
    enter description here
    enter description here
    把导入的library添加到目的项目的依赖中
    enter description here
    enter description here

    当导入的library里的项目build.gradle文件里包含一些上传到版本仓库的信息的话导入过后可能会报错,这时候只需要把不必要的信息注释掉即可,需要保留的是编译配置,依赖关系,目录配置。如下
    
    apply plugin: 'com.android.library'
    //项目编译信息
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            minSdkVersion 11
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
    
    }
    //依赖信息
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.2.1'
        compile 'com.android.support:design:23.2.1'
    }

    当然也可以手动把module文件夹拷贝到工程目录中然后修改settings.gradle文件,不过不推荐这种方式。

    五. 快捷键

    AS的自动提示功能很强大,有输入过后会自动弹出提示不需要像Eclipse一样按alt+/才提示,至于其他AS的快捷键很多就不一一说明了, 上个图拿去自行修炼吧
    enter description here

    六. 插件安装

    打开Setting页面 找到Plugins 搜索安装 如图
    enter description here
    enter description here

    推荐的几个AS插件,具体用法请自行百度
    1. GsonFormat
    2. android-butterknife-zelezny
    3. JsonOnlineViewer

    七. 打多渠道包

    国内上线APP一般要从多渠道发布,为了统计渠道安装量一般需要每个渠道生产一个安装包,AS自带多渠道打包功能,多渠道打包功能绝对是AS最实用的功能之一,这里重点讲一下。

    1. 生成签名文件

    签名文件可以在build->generate signed apk -> 选择项目 next ->create new生成,方式与eclipse差不多
    enter description here

    1. 设置打包用的签名文件

    打开module setting 新建一个signing项 选择签名文件 填写签名文件的密码别名等
    enter description here

    1. 新建Flavors配置

    作为示例我新建了三个配置并选择打包用到的签名配置 一个offline_debug、一个release_360、一个release_baidu

    enter description here

    1. 修改module的build.gradle和Mainfest文件

    按照上一步配置好之后,build.gradle里会多出productFlavors和singConfig配置,我们要修改的是productFlavors部分。
    如何修改我们来举例说明

    这是build.gradle文件内修改的部分

    defaultConfig {
            applicationId "com.example.mark.myapplication"
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
            //BuildConfig.IS_SIGN = false
            buildConfigField "boolean", "IS_SIGN", "false"
        }
        productFlavors {
            offline_debug {
                signingConfig signingConfigs.signConfig
                //这里演示的是一个变量的写法
                manifestPlaceholders = [APP_NAME: "Debug版本"]
            }
            release_360 {
                signingConfig signingConfigs.signConfig
    
                //BuildConfig.IS_SIGN = true
                buildConfigField "boolean", "IS_SIGN", "true"
                //这里演示的是有多个变量的写法
                manifestPlaceholders = [APP_NAME: "360版本", EXAMPLE: "360"]
            }
            release_baidu {
                signingConfig signingConfigs.signConfig
                buildConfigField "boolean", "IS_SIGN", "true"
                manifestPlaceholders = [APP_NAME: "百度版本", EXAMPLE: "baidu"]
            }
        }

    其中defaultConfig内的 buildConfigField “boolean”, “IS_SIGN”, “false”一句 是在构建项目生成的BuildConfig类中添加一个名为 IS_SIGN 的bool变量,并赋值为false。
    这个变量是可以在代码里使用的,如下面的代码可以用来切换线上线下的请求地址

    public static String BASE_URL;
        static {
            if(BuildConfig.IS_SIGN){
                BASE_URL = "线上地址";
            }else{
                BASE_URL = "线下地址";
            }
        }

    productFlavors 内的manifestPlaceholders = [APP_NAME: “Debug版本”] 一句的含义是 将AndroidManifest.xml文件里的变量APP_NAME替换为冒号后面的字符串,这句是只有一个要替换的变量的写法,后面you多个变量的写法举例。这个APP_NAME在Manifest文件中的定义格式如下 ${变量名} 在打包的时候gradle会自动把这个占位变量给替换掉。

    <activity
                android:name=".LoginActivity"
                android:label="${APP_NAME}">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

    这种变量定义可以出现在Mainfest中任何需要字符串的位置,我上面只是一个示例,请活学活用不要照搬照抄。

    1. 打包

    同时选中你要打包的配置项 点击finish 等一会就会同时生成多个APK。
    enter description here

    推荐下自己创建的android QQ群: 202928390欢迎大家的加入.

    如果你想第一时间看我们的后期文章,扫码关注公众号,每周不定期推送Android开发实战教程文章,你还等什么,赶快关注吧,学好技术,,出任ceo,赢取白富美。。。。。。。。。。
    互联网动态

    展开全文
  • Android studio入门

    2015-08-31 21:11:30
    Android stodio 入门 ... 总结Android stodio 入门 Android Studio是一套面世时间还不长的IDE(即集成开发环境),目前已经免费向谷歌及Android的开发人员发放。Android Studio以IntelliJ IDEA为基础,后者同样

    Android stodio 入门

     Android Studio是一套面世时间还不长的IDE(即集成开发环境),目前已经免费向谷歌及Android的开发人员发放。Android Studio以IntelliJ IDEA为基础,后者同样是一套相当出色的Android开发环境。在今天的文章中,我们将共同了解如何创建一个全新Android项目,同时充分发挥Android Studio所提供的各项功能优势。
     原文链接:Getting Started with Android Studio: Part 1                翻译:核子可乐
     
     *新版本的Android Studio与该文章的截图有出入,但不影响按教程操作。


     1.项目设置

      在开始畅游Android Studio的世界之前,大家首先需要点击此处下载并进行安装。请注意,各位必须事先安装好JDK 6或者更高版本。如果是在Windows系统环境下,先启动.exe文件、而后按照安装向导的指示一步步完成。如果大家使用的是OS X系统,则首先双击启动磁盘镜像,然后将Android Studio拖拽到自己的应用程序文件夹当中。

      在成功完成了以上各项步骤后,那么大家的开发环境应该已经得到了正确设置。接下来,我们可以准备好利用Android Studio创建自己的第一款Android应用程序了。当大家第一次启动Android Studio时,应该会看到该软件的欢迎屏幕,其中还提供一些选项、指导我们以此为起点迈出Android应用开发的第一步。

    这里写图片描述

      在今天的教程中,我们将选择“New Project(新项目)”选项。不过如果大家希望把Eclipse等其它环境中的现有项目转化为Android Studio项目,也可以选择“Import Project(导入项目)”。Android Studio能够将Eclipse项目转换为Android Studio项目,并在项目中为用户提供必要的配置文件。

      如果大家在选项列表中点击了“Open Project(打开项目)”,则可以开启已经利用Android Studio或者IntelliJ IDEA创建出的项目。而选择“Check out from Version Control(版本控制检查)”的话,大家能够对处于版本控制之下的项目副本进行检查。通过这种方式,我们可以将现有项目作为基础、快速构建起新的针对性版本。

      由于我们需要从零开始,因此这里选择“新项目”。这时大家会看到一份选项列表,旨在对我们的新项目作出配置。在今天的教程中,我们将创建一款简单的应用程序,主要目的是为大家演示Android Studio中最为重要的一部分功能特性。相信大家也和我一样,会认为“HelloWorld”这个名称最适合本次开发出的新项目。

    这里写图片描述

      正如大家在上面这幅截图中所看到,我把自己的应用程序命名为HelloWorld,并为其设定了模块名称。如果大家对IntelliJ IDEA不太熟悉,可能不知道模块这东西到底是什么。模块实际上就是一个可以进行编译、运行、测试以及调试的独立功能单元。模块当中包含有源代码、编译脚本以及用于特定任务的其它组成部分。

      在创建新项目时,大家还可以为该项目设定软件包名称。在默认情况下,Android Studio会将项目包名称的最后一项元素设置为模块名称,但只要愿意、大家可以随意对其作出变更。

      其它设定内容还包括项目在设备上的保存位置、最低与推荐SDK、项目编译需要使用的SDK以及项目主题等等。大家也可以要求Android Studio创建一个Activity类、为其自定义一个启动图标,或者设定该项目是否支持GridLayout、Fragments、Navigation Drawer或者Action Bar等。

      这里我们不会为自己的应用程序创建自定义图标,因此大家可以取消“Create custom launch icon(创建自定义启动图标)”项目前的勾选框。点击“Next(下一步)”继续进行其它项目设置步骤。

      由于我们在之前的步骤中勾选了“Create activity(创建activity)”项目的勾选框,因此这里导航会要求大家对Android Studio将为我们创建的Activity类进行配置。

      由于我们将从空白Activity类开始进行配置,因此大家可以点击“Next”执行设置流程的下面几个步骤。这里大家需要对该Activity类、主布局以及片段布局进行命名。大家也可以设置导航类型,在今天的示例项目中我们将其设置为“None”。下面这幅截图显示的是我们的设置方案看起来是什么样子。

    这里写图片描述

      在点击“Finish”之后,大家会看到如下图所示的Android Studio用户界面。其中窗口左侧为项目资源管理器,右侧则为工作区。在Android Studio中对项目进行设置之后,现在我们可以逐一查看Android Studio当中的各项关键功能。
    这里写图片描述


     2. Android虚拟设备

      所谓Android虚拟设备——或者简称AVD——是一套模拟器配置方案,它允许大家设定出与实际情况相符的Android设备型号。这就让开发者在多种多样的设备平台上运行并测试应用程序变得更为轻松。在Android虚拟设备功能的支持下,大家可以为Android模拟器指定需要模拟的硬件与软件组合。

      创建Android虚拟设备的首选方式是通过AVD Manager。大家可以在Android Studio用户界面的Tools菜单中依次选择Android〉AVD Manager。

    这里写图片描述

      如果大家之前对开发环境的设置工作正确无误,那么Android虚拟设备管理器的界面应该如下图所示。
    这里写图片描述

      要创建新的AVD,我们需要点击右侧的“New…”、为AVD设定名称并如下图所示对虚拟设备进行配置。最后点击“OK”以创建自己的第一套AVD。

    这里写图片描述

      要使用我们刚刚创建好的AVD,首先需要在AVD管理器的列表中将其选中,然后点击窗口右侧的“Start…”。如果大家的AVD设置过程正确无误,那么Android模拟器在启动后应该如下图所示。

    这里写图片描述

      既然Android模拟器已经成功启动并开始运行,现在是时候启动我们的应用程序了。在“Run”菜单中选择“Run ‘helloworld’”——没错,在Android模拟器中运行应用程序就是这么简单。

    这里写图片描述


     3.实时布局(Live Layout)

      Android Studio中的实时布局功能允许大家在无需将应用程序运行在设备或者模拟器中的前提下,直接预览应用的用户界面。实时布局是一款极为强大的工具,能够帮助开发者节约大量时间。在实时布局的帮助下,查看应用程序用户界面的任务变得轻松而且快捷。

      要使用实时布局,我们需要双击对应XML布局文件并选择工作区下方的“Text”标签。接下来选择工作区右侧的“Preview”标签来预览当前布局。我们对XML布局作出的任何变更都会直接反映在右侧的预览窗口当中。大家可以查看下面这幅截图来深入理解这项功能。

    这里写图片描述

      实时布局功能为我们带来了诸多值得称道的显著优势。举例来说,大家可以在Preview面板的第一项菜单中选择选项,从而对当前正在使用的XML布局随意作出调整。譬如说,大家可以分别创建不同的纵向与横向显示视图,Android Studio会承担起创建必要文件夹及文件的任务。

      Preview面板中的第二项菜单允许大家变更显示在Preview面板内的设备大小。第三项菜单的作用则是调整设备在Preview面板中的朝向,这样我们就能更轻松地查看同一套布局方案在不同显示模式(纵向与横向)下的效果与主题。

      Preview面板中的第四项菜单允许我们轻松访问Activity或者布局所使用的个别片段。Preview面板还允许大家变更在实时布局中使用的语言,从而轻松预览不同语言在布局方案中的显示效果。最右边的菜单的作用则是调整API版本。

      Preview面板中还包含多项控制机制,例如对布局进行缩放、重新Preview面板或者截取当前屏幕。


     4.模板

      Android Studio还为开发人员提供多种模板选项,从而大大提升开发速度。这些模板能自动创建Activity以及必要的XML文件。大家还可以利用这些模板创建出较为基础的Android应用程序,并将其运行在实体设备或者模拟器当中。

      在Android Studio当中,我们可以在创建新的Activity时一同创建出对应模板。右键点击窗口左侧项目浏览器中的“package name”并在菜单中选择“New”,而后从选项列表中点选“Activity”。Android Studio随后会为开发者列出模板清单,其中包括Blank Activity、Fullscreen Activity以及Tabbed Activity。

    这里写图片描述

      大家还可以从菜单中选择“Image Asset”,接下来的向导会指引我们一步步完成创建流程。下面让我们一起来看看如何以Login Activity模板为基础创建一套新的Activity。首先在Acivity模板列表中选择Login Activity选项以启动创建向导。

    这里写图片描述

      如大家在上面的截图中所见,我已经将新建的Activity命名为LoginActivity——也就是为activity login设定Layout Name——并为该Activity添加了一个名为Sign In的标题。在默认情况下,对话框中的Include Google+ sign in项目已经被勾选。由于我们不打算在今天的示例中使用Google+登录功能,因此取消该勾选项。

      大家可以选择为这套新的Activity设定Hierarchical Parent(分层结构)。这样当我们点击设备上的后退按钮时,应用就将通过导航返回至上一界面。我们将这一字段留空。在点击“Finish”之后,Android Studio会为我们创建出必要的文件及文件夹。如果一切进展顺利,我们将在项目当中看到新的Activity与Layout。

      下一布工作是在manifest文件中对新Activity进行设置,这样它就能在应用程序启动时作为主Activity加以使用了。请大家一起来看下面的manifest文件内容,其中LoginActivity类拥有自己的活动节点。

    <application 
            android:allowBackup="true" 
            android:icon="@drawable/ic_launcher" 
            android:label="@string/app_name" 
            android:theme="@style/AppTheme" > 
            <activity 
                android:name="com.tuts.HelloWorld.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> 
            <activity 
                android:name="com.tuts.HelloWorld.LoginActivity" 
                android:label="@string/title_activity_login" 
                android:windowSoftInputMode="adjustResize|stateVisible" > 
            </activity> 
        </application>

      为了在应用程序当中启动我们刚刚创建的LoginActivity,首先需要移除原有LoginActivity类的活动节点,然后利用com.tuts.HelloWorld.LoginActivity代替先前的com.tuts.HelloWorld.MainActivity。这样一来,应用程序现在就将使用LoginActivity类作为其主Activity。

    <application 
            android:allowBackup="true" 
            android:icon="@drawable/ic_launcher" 
            android:label="@string/app_name" 
            android:theme="@style/AppTheme" > 
            <activity 
                android:name="za.co.helloworld.LoginActivity" 
                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>

      当我们在模拟器当中创建并运行自己的应用程序时,首先应该会看到如下图所示的显示内容。这意味着我们已经成功利用刚刚创建的LoginActivity类取代了原有的空白Activity类。

    这里写图片描述


     5.Lint工具

      对代码进行测试是一回事,但同样重要的是、我们还需要在编写代码的同时引入各种最佳实践。这不仅能够显著改进性能表现,也能增加应用程序的整体稳定性。另外,经过合理结构调整的项目在维护方面也更为轻松。

      Android Studio中提供的Android Lint是一款静态分析工具,它负责对项目源代码加以分析。它能够检测出应用程序中的潜在漏洞以及其它可能被编译器所忽略的其它代码问题。

      就以下面这幅截图为例,大家可以看到该布局中的LinearLayout并未得到实际使用。Android Lint的优势在于,它能帮助我们重视警告或报错信息的出现原因,从而更轻松地修复或者解决这些问题。

    这里写图片描述

      请大家养成重复使用Android Studio Lint工具的好习惯,这能帮助我们准确检测到项目当中存在的潜在问题。Lint工具甚至能告诉我们应用程序中是否存在重复的图片或者编译内容。

      要运行Lint工具,大家首先需要在Android Studio的“Analyze”菜单中选择“Inspect Code…”。当Android Studio完成了对项目的检测之后,它会在窗口底部显示出分析结果。请注意,除了Android Lint之外,Android Studio还提供一系列其它检查功能。只需双击某个已经发现的问题,系统就会帮助大家定位到对应文件中存在问题的位置。

    这里写图片描述


     6.富布局编辑器

      Android Studio提供一套富布局编辑器,大家可以在其中随意拖拽各类用户界面组件。大家还可以在多屏幕配置中同时查看多种布局的显示效果,这一点我们在前文中已经提到过。

      这款富布局编辑器在使用方面非常直观简单。我们首先需要一套要处理的布局方案。浏览到项目中res文件夹下的layout文件夹,右键点击layout文件夹,然后在弹出的菜单中选择New>Layout resource file。

      下面为新布局设定一个名称与root元素,而后点击“OK”。Android Studio会自动在窗口右侧的编辑器当中打开该布局。

    这里写图片描述

      在编辑器的底部,大家会看到两个标签,分别是Design与Text。点击Text标签后编辑器将被激活,这样我们就能对当前选定的布局方案作出变更。

      点击Design标签则会激活另一套编辑器内容,其中显示出布局的预览效果。要向布局当中添加其它功能性组件,我们只需将其从布局左侧的组件列表中拖出并放入布局内即可。是的,就这么简单。

    这里写图片描述


     总结

      在今天的教程中,我们已经简要了解了Android Studio的各项核心功能。它的使用方式与IntelliJ IDEA非常相似,但其中包含的一系列重要改进大大加快了Android应用的开发速度,并让整个流程更轻松、更愉快。

    展开全文
  • Android Studio入门指南

    千次下载 热门讨论 2013-11-06 09:00:08
    历上最全,全球首本Android Studio入门指南,如有任何问题,请联系我. 博客:blog.csdn.net/wirelessqa 来往:hello_xiaopeng 如果没有分,留下邮箱,我可以直接把书发给你。哈哈!
  • AndroidStudio入门基础(一)——基础布局

    万次阅读 多人点赞 2018-09-08 15:48:40
    遗忘是可怕的,为了防止以后把好不容易学到的东西忘得一干二净,我打算写一系列的AndroidStudio教程记录一些有用的知识点,当然,我会从最基础的地方写起,希望可以帮助到一些初学者~ 最后,如果时间和精力允许的...

    写在前面:

    上学期学习了Android,从一开始的什么都不懂到后来成功做出一个课程设计作品,回忆起来一路还是充满坎坷和辛酸泪的啊。

    遗忘是可怕的,为了防止以后把好不容易学到的东西忘得一干二净,我打算写一系列的AndroidStudio教程记录一些有用的知识点,当然,我会从最基础的地方写起,希望可以帮助到一些初学者~

    最后,如果时间和精力允许的情况下,我会一步步的还原我的课程设(≧∀≦)ゞ


    目录

    1.认识目录

    2.RelativeLayout

    3.LinearLayout


    1.认识目录

    以FirstActivity为例子,我们需要掌握的文件有:

    • manifest
    • java
    • drawable
    • layout
    • values

    ①manifest文件夹里面只有一个AndroidManifest.xml文件,在这个文件里,我们是对整个app进行一些设置,例如app的logo,app一进去的启动页面,app的名字...

    ②java文件夹里面是.java文件,负责整个app的逻辑处理,是完成整个app的核心所在。java文件真的超级powerful,后续会慢慢用例子体现,现在说一大堆显得有点空洞。

    TIPS:初学者一般Java文件建立好了之后,不会随便移动它的位置。

    ③drawable文件夹里面放app需要用到的图片

    ④layout文件夹里面放的是“画页面”的.xml文件,里面的文件也叫布局文件。如果你会html&css&js的话,就很好理解了。.xml文件的作用就和.html和.css文件的作用类似,页面需要什么组件?怎么布局?用一些什么样式?都在.xml里面设置。但是对于一些复杂的样式,在.xml文件里面可能设置不了那么精美,就可以在java文件里面设置。

    ⑤value文件夹里面放了一些字符串,颜色等常量,例如:

    //color.xml
    <resources>
        <color name="colorPrimary">#3F51B5</color>
    </resources>
    
    
    //firstActivity.xml
    <Button
        android:background="@color/colorPrimary"
        />

    对于颜色#3F51B5,我给它起名字叫colorPrimary,之后我在布局文件中用这个颜色,就只需要喊它的名字colorPrimary就可以了。

    最后总结一些基本思想:

    • layout和java文件夹是最重要的。如果把app比作一个人,layout就是一个人的脸,java就是一个人是灵魂。前者决定了这个app长什么样子,后者决定了这个app可以实现那么功能。
    • 对于初学者,AndroidManifest.xml和value文件夹的作用不用着急掌握,到了某一天你需要实现某个功能需要用到这些,你就可以真真切切的知道它的用处了。

    2.RelativeLayout

    AndroidStudio里面支持的布局有挺多种的,但是最最重要的是RelativeLayout(相对布局)和LinearLayout(线性布局),熟练掌握这两种布局也非常够用了,当然还有GridLayout...但是对于初学者,先学会了相对布局和线性布局,再去学习其他布局,就会觉得非常简单轻松了。还有一个非常有用的布局,叫RecyclerLayout,因为要结合adapter使用,所以对于初学者略难,这里就先不讲了,之后会非常详细的介绍它。

    学习布局需要掌握的东西很简单,就是它有的属性,以及取不同属性值可以达到的效果,下面我就慢慢列出来。

    • layout_width
    • layout_height

    这两个属性就决定了布局的宽度和高度,把RelativeLayout想象成一个相框或者一个容器,在这个相框里面可以装其他的组件。对于嵌套在相框里面的组件,其所在的相框就是它的父空间。这个相框的大小呢,就用上面这两个属性举例,取值有三种:

    • wrap_content 刚刚把文字组件包裹满的长度
    • match_parent 撑满整个父空间的长度
    • 100px 具体的像素值

    对于相对布局有一个地方要注意!!!

    相对布局里面的组件需要设置id(在同一个.xml文件里面的所有组件,其id不可以重复哦~)然后用layout_below设置组件的相对位置。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            android:id="@+id/button_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 1"
            />
    
        <Button
            android:id="@+id/button_2"
            android:layout_below="@id/button_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button 2"
            />
    </RelativeLayout>

    例如上面这个例子,在RelativeLayout里面有两个按钮,第一个按钮的id是button_1,android:id="@+id/button_1",第二个按钮的id是button_2,为button_2设置了android:layout_below="@id/button_1"表示按钮2在按钮1的下面。所以效果图如下:

    如果我不为按钮2设置相对向下的对象会怎样呢?也就是删掉android:layout_below="@id/button_1"。答案是按钮二会覆盖按钮一。

    如果想让按钮居中怎么办?答案就是为RelativeLayout添加一个属性  android:gravity="center"

    如果继续追问,我希望按钮一和按钮二并排在一起怎么办?答案是:sorry,RelativeLayout做不到啊~~

    但是LinearLayout可以做到哦!

    RelativeLayout还有很多其他的属性,可以自己试着玩,重要的属性就是上面这些,我用红色的粗体标记啦~


    3.LinearLayout

    线性布局要灵活一些,在实际应用上也是最最最广泛的。

    • layout_width
    • layout_height

    和相对布局一样的用法和属性值,我就不赘述了!

    区别于RelativeLayout,LinearLayout就不要求每个组件都要设置自己的id了,但是最好还是设置一下,这是一个好习惯哦。

    那么问题来了,我怎么设置两个组件是横着并排还是竖着并排呢??现在就隆重介绍线性布局的重要属性 orientation          

    取值有两种:vertical(垂直)和 horizontal(水平)

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        >
    
        <Button
            android:id="@+id/button_1"
            android:layout_width="200px"
            android:layout_height="100px"
            android:text="Button 1"
            />
    
        <Button
            android:id="@+id/button_2"
            android:layout_width="200px"
            android:layout_height="100px"
            android:text="Button 2"
            />
    
        <Button
            android:id="@+id/button_3"
            android:layout_width="200px"
            android:layout_height="100px"
            android:text="Button 3"
            />
    
    </LinearLayout>

    android:orientation="horizontal" 决定了容器里面的所有组件都绝对是水平排列的
    !!!需要注意的就是,哪怕我的组件已经装不下了,也不会被挤到下一排,而是只显示一截,甚至完全不显示。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <Button
            android:id="@+id/button_1"
            android:layout_width="200px"
            android:layout_height="100px"
            android:text="Button 1"
            />
    
        <Button
            android:id="@+id/button_2"
            android:layout_width="200px"
            android:layout_height="100px"
            android:text="Button 2"
            />
    
    </LinearLayout>

    android:orientation="vertical"决定了容器里的组件都是垂直排列,这就很好理解了。

    线性布局还有一个重要的属性 layout_weight 取值一般是1、2、3...表示权重的大小,例如:

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <Button
            android:id="@+id/button_1"
            android:layout_width="200px"
            android:layout_height="100px"
            android:layout_weight="1"
            android:text="Button 1"
            />
    
        <Button
            android:id="@+id/button_2"
            android:layout_width="200px"
            android:layout_height="100px"
            android:layout_weight="2"
            android:text="Button 2"
            />
    
    </LinearLayout>

    LinearLayout的强大就在于它是可以嵌套的,从而实现很多复杂的布局。

    为了巩固你对它的认识,我出一个小小的题目,这是我的课程设计的一个页面,你会怎么设计这个布局呢??

    我自己也再试了试:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:background="#FFEA8E"
        >
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#98E0AD">
    
                    <ImageView
                        android:id="@+id/image_bg"
                        android:layout_width="match_parent"
                        android:layout_height="258dp"
                        android:background="#EDD3ED"/>
    
                    <LinearLayout
                        android:layout_below="@id/image_bg"
                        android:id="@+id/layout_button"
                        android:layout_width="match_parent"
                        android:layout_height="70dp"
                        android:background="#F8A1A4"
                        android:orientation="vertical">
    
                        <RadioGroup
                            android:id="@+id/rg_main"
                            android:layout_width="match_parent"
                            android:layout_height="70dp"
                            android:layout_marginLeft="40dp"
                            android:layout_alignParentBottom="true"
                            android:background="#C785C8"
                            android:orientation="horizontal">
    
                            <RadioButton
                                android:id="@+id/rb_me"
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:paddingRight="28dp"
                                android:background="#C00000"
                                android:button="@null"
                                android:gravity="center"
                                android:textSize="19sp" />
    
                            <RadioButton
                                android:id="@+id/rb_heart"
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:paddingRight="33dp"
                                android:layout_weight="1"
                                android:button="@null"
                                android:background="#7030A0"
                                android:gravity="center"
                                android:textSize="19sp" />
    
                            <RadioButton
                                android:id="@+id/rb_order"
                                android:layout_width="0dp"
                                android:layout_height="match_parent"
                                android:layout_weight="1"
                                android:background="#00B0F0"
                                android:paddingRight="34dp"
                                android:button="@null"
                                android:gravity="center"
                                android:textSize="19sp" />
                        </RadioGroup>
                    </LinearLayout>
    
    
                    <LinearLayout
                        android:id="@+id/layout_mywork"
                        android:layout_below="@id/layout_button"
                        android:layout_width="match_parent"
                        android:layout_height="74dp"
                        android:background="#6BD089"
                        android:orientation="vertical">
    
                        <TextView
                            android:layout_width="match_parent"
                            android:layout_height="62dp"
                            android:textColor="#212122"
                            android:gravity="center"
                            android:background="#8389E0"
                            android:textSize="24sp"
                            />
    
                    </LinearLayout>
    
                    <LinearLayout
                        android:id="@+id/layout_work1"
                        android:layout_below="@id/layout_mywork"
                        android:layout_width="match_parent"
                        android:orientation="horizontal"
                        android:paddingRight="6dp"
                        android:paddingLeft="6dp"
                        android:background="#C785C8"
                        android:layout_height="150dp">
    
                        <ImageView
                            android:padding="0dp"
                            android:layout_width="match_parent"
                            android:layout_weight="1"
                            android:layout_height="160dp"
                            android:background="#FBCFD0"
                            android:layout_marginRight="6dp"
                            android:layout_marginLeft="6dp"
                            />
    
                        <ImageView
                            android:layout_width="match_parent"
                            android:layout_weight="1"
                            android:background="#FBCFD0"
                            android:layout_marginRight="6dp"
                            android:layout_marginLeft="6dp"
                            android:layout_height="160dp"
                            />
    
                        <ImageView
                            android:id="@+id/work1"
                            android:layout_width="match_parent"
                            android:layout_weight="1"
                            android:background="#FBCFD0"
                            android:layout_marginRight="6dp"
                            android:layout_marginLeft="6dp"
                            android:layout_height="160dp"
                            />
    
                    </LinearLayout>
    
                    <LinearLayout
                        android:id="@+id/layout_work2"
                        android:layout_below="@id/layout_work1"
                        android:layout_width="match_parent"
                        android:layout_marginTop="10px"
                        android:orientation="horizontal"
                        android:paddingRight="6dp"
                        android:paddingLeft="6dp"
                        android:background="#60C5F1"
                        android:layout_height="150dp">
    
                        <ImageView
                            android:padding="0dp"
                            android:layout_width="match_parent"
                            android:layout_weight="1"
                            android:layout_height="160dp"
                            android:layout_marginRight="6dp"
                            android:layout_marginLeft="6dp"
                            android:background="#C8EFD4"
                            />
    
                        <ImageView
                            android:layout_width="match_parent"
                            android:layout_weight="1"
                            android:layout_marginRight="6dp"
                            android:layout_marginLeft="6dp"
                            android:layout_height="160dp"
                            android:background="#C8EFD4"
                           />
    
                        <ImageView
                            android:layout_width="match_parent"
                            android:layout_weight="1"
                            android:layout_marginRight="6dp"
                            android:layout_marginLeft="6dp"
                            android:layout_height="160dp"
                            android:background="#C8EFD4"
                            />
    
                    </LinearLayout>
    
                </RelativeLayout>
    
    </LinearLayout>

    总结:

    这一篇主要讲了布局,都是在layout文件夹的.xml文件中实现,现在还没涉及到java文件。

    下一步是介绍一些常用的组件~~  传送门

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    2021.9.15更新

    距离这篇博客发布已经三年了,真的没想到这篇博客能让这么多人,截至现在已经有693个收藏了,太让我意外了,能帮到别人感觉真的很开心。

    不过,最近陆陆续续有一些小伙伴私信我关于安卓的问题,我真的一头雾水,我是真的不知道该怎么回答,因为我本身不是软件工程专业的,学习安卓是在大二下的一门选修课,安卓开发我也只是了解皮毛,后来参加大四的时候参加比赛做了一个关于养宠物的APP,之后就再也没接触过安卓了,渐渐已遗忘了。当初为什么写这篇博客是因为,有一个初中同学当时正在学安卓,来问我问题,当时的交谈大概知道她是零基础,我正好刚学完这门课,发现VX上一两句话说不清楚,我就写了这篇博客给她看。

    看到小伙伴私信问我问题,我不能回答,那种爱莫能助的感觉其实挺难受的,因为我也曾经给博主发过私信问问题,还是很期待能够得到答复的。

    最后,希望遇到问题的小伙伴可以把问题写在评论区,其他阅读本博客的小伙伴可以看看评论区,如果了解相关问题可以分享和讨论,我的影响力其实很小,或许你的问题并不一定可以通过这种方式解决,不过前人栽树,后人乘凉,相信随着时间积累还是有帮助到一些人的,哪怕很少。

    最最后,我还是希望用我小小的影响力帮助到别人,写这篇博客的时候是一个大三学生,现在我已经是直博二年级的研究生,我目前在NUDT的系统工程学院的管理科学与工程专业,研究方向是数据挖掘,复杂网络。如果有想报考这个学校 or 计划保研 or 想交流大学期间的学习竞赛心得 or ......的小伙伴可以私信我,CSDN我还是经常看的,但是安卓我现在是真不会了....

    展开全文
  • android studio入门

    2019-02-27 10:14:10
    https://blog.csdn.net/myosotis5/article/details/79208707
  • Android studio 入门教程

    2018-01-30 16:46:18
    Android studio 入门教程,想学Android studio平台的朋友可以下载看看。。。。
  • android studio 入门

    千次阅读 2013-06-10 15:09:52
    刚装了android studio 用起来还有点不顺手你,找了一片教程贴在这里共大家学习交流。 原文:http://bbs.51cto.com/thread-1035296-1.html 最近Google的在Google I/O大会上推出了一款新的开发工具——android ...
  • Android Studio 入门指南.pdf
  • Android Studio入门视频

    2016-03-02 20:29:42
    Android Studio 入门视频 由于压缩包太大,所以就给了百度云连接
  • Android Studio入门到精通资料.txt
  • Android Studio入门到精通

    万次阅读 多人点赞 2015-04-27 09:59:21
    目标:Android Studio新手–>下载安装配置–>零基础入门–>基本使用–>调试技能–>构建项目基础–>使用AS应对常规应用开发AS简介经过2年时间的研发,Google终于正式发布了面向Android开发者的集成开发环境Android ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,401
精华内容 7,360
关键字:

androidstudio入门