课程1C

概述

  • 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点。

Drawable文件夹

  • Drawable文件夹是Android项目统一管理绘图资源的文件夹。为了在不同分辨率的设备上保持各元素显示大小的一致性,可以在Drawable文件夹下设置对应不同分辨率图片的各个子文件夹。当加载图片资源时,根据设备的分辨率去选择合适的图片加载。
  • 在XML布局文件中引用Drawable文件夹下的资源的语法:
android:src="@drawable/your_resrc_file_name_without_file_extension"

安装Android Studio

  • Android Studio基于Java开发工具箱(Java Development Kit,JDK)提供的运行时环境,在安装Android Studio之前务必装好JDK。
  • 一步步按照课程中的步骤来安装,应该不会遇到什么问题。

在手机上运行 Hello World

  • 首先新建项目(注意选择Empty Activity):

    图1.新建生日贺卡应用的项目

  • 开启USB调试,连接手机后,点击Android Studio界面中的运行按钮,弹出如下的对话框,提示开发者选择运行程序的设备。这里选择连接的手机而不是模拟器。

      运行效果:

    图2.在手机上运行Empty Activity

  • 比较有意思的是,显示"Hello World!"的过程中我并没有编写一行代码。这是因为现在的Android开发IDE(Eclipse、Android Studio),对于Empty Activity的项目创建设置,一般都会自动在布局xml文件中生成一个文本为"Hello World!"的TextView。
  • Android Studio会默认自动在布局xml文件中生成设置padding属性的代码。不需要的话,可以自行删除。

设置贺卡中文本的位置

  • 用到的属性layout_alignParentRightlayout_alignParentBottomlayout_widthlayout_height
  • layout_alignParentRight与layout_alignParentBottom合起来能够将元素设置到父视图右下角的位置。这个比较容易理解。
  • 注意,属性layout_widthlayout_height在这里是必要的,因为这两个属性能够影响元素占据的屏幕空间。

    举例来说,如果一个TextView的宽度属性被设置为match_parent,那么你是不能将此TextView中的文本(占据的屏幕空间不到一行)设置到一行的最右边的:



      图3.layout_width&height在设定元素位置时的必要性

设置贺卡中的图片

  • 为了使图片占满整个手机屏幕,对应的ImageView的宽高都设置成wrap_content
  • 自己找了一张图片放到drawable下,文件名为androidcake.jpg
  • 设置图片的代码:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/androidcake" />

在styles.xml中自定义颜色

  • 在Material Design Sepc上挑选了自己比较满意的颜色(以16进制的数值表示),为了在Android UI的布局xml文件中引用这些颜色,需要在项目文件下到/res/values/styles.xml文件中添加这些颜色:
    <color name="lightred">#ef5350</color>
<color name="darkred">#b71c1c</color>

设置字体、文本风格

  • 定义好满意的颜色后,接下来设置文本的颜色、文本风格以及字体:
<TextView
...
android:fontFamily="sans-serif-medium"
android:textColor="@color/lightred"
android:text="Happy Birthday R9!"
android:textStyle="bold"
... />
<TextView
...
android:textColor="@color/darkred"
android:fontFamily="sans-serif-medium"
android:text="From DerekKen"
android:textStyle="bold"
... />

效果展示

  • 完成以上的步骤之后,最后自己完成的生日贺卡应用在手机上运行的效果如图所示:

      图4.生日贺卡App运行效果展示

1C课程笔记分享_StudyJams_2017的更多相关文章

  1. 1A课程笔记分享_StudyJams_2017

    1A课程 概述 课程1A主要讲解了Android UI的三种基本控件:TextView.ImageView以及Button.笔记的主体内容主要根据课程内容的讲解顺序来组织,此外我对一些个人比较感兴趣的 ...

  2. 1B课程笔记分享_StudyJams_2017

    课程1B 概述 课程1B主要讲解了Android UI的ViewGroups(视图组).LinearLayout(线性布局).RelativeLayout(相对布局),Portrait Mode(竖屏 ...

  3. 3A课程笔记分享_StudyJams_2017

    课程3A-面向对象编程(上) 概述 面向对象的思想在当今的软件开发中占据着主导地位. Java是一门完全面向对象的语言,是一种天然的分布式互联网软件的开发语言,在当今企业级应用中占据绝对领先地位,也是 ...

  4. 2C课程笔记分享_StudyJams_2017

    课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...

  5. 2B课程笔记分享_StudyJams_2017

    课程2B-创建交互式应用(下) 概述 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等. 后续的课程会逐步深入地讲解使用Java开发 ...

  6. 2A课程笔记分享_StudyJams_2017

    课程2A 概述 课程2A.2B的内容主要是关于创建交互式应用的基础知识.之前的L1课程主要是Android UI的基础设计知识,基本上没涉及到编程. 2A的讲解主要包括:使用变量来更新欲显示在屏幕上的 ...

  7. 3B课程笔记分享_StudyJams_2017

    昨晚才发现 Study Jams China的官方论坛也支持MarkDown,所以直接发在了那上面.http://www.studyjamscn.com/thread-21807-1-1.html

  8. L4课程_Firebase_笔记分享_StudyJams_2017

    最近才发现Study Jams China的官方论坛也支持MarkDown,所以就直接把笔记发在了那儿. http://www.studyjamscn.com/thread-21855-1-1.htm ...

  9. 深度学习课程笔记(一)CNN 卷积神经网络

    深度学习课程笔记(一)CNN 解析篇 相关资料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html 首先提到 Why CNN for I ...

随机推荐

  1. Scrapy实战:使用IDE工具运行爬虫

    一般我们运行爬虫程序都是使用命令行,比如:scrapy crwal sobook.不过这多少有些不方便,可以使用下面的方法使用IDE的方式运行爬虫 我这边使用的是pycharm软件,在pycharm里 ...

  2. 我理解的数据结构(一)—— 数组(Array)

    我理解的数据结构(一)-- 数组(Array) 首先,我是一个phper,但是毕竟php是一个脚本语言,如果使用脚本语言去理解数据结构具有一定的局限性.因为脚本语言是不需要编译的,如果你的语法写的不错 ...

  3. 面试题:你能写一个Vue的双向数据绑定吗?

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  4. 《hello-world》第八次团队作业:Alpha冲刺-Scrum Meeting 5

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 <hello--worl ...

  5. Delphi 10.3.2最新消息

    官方已经发布消息,招内测人员了! https://www.barnsten.com/default/newsupdates/details?news_id=328 https://docs.googl ...

  6. vue 根据网站路由判断页面主题色

    需求: 不同品牌对应不同版本配色 做法: 根据域名带的参数判断进入哪个品牌,对应哪个版本 在main.js中 import Vue from 'vue' import App from './App' ...

  7. VScode使用简介

    1.1 VSCode简介 VSCode官网:https://code.visualstudio.com/ 支持语音: 速度较快,对超大文件读写速度飞快(打开10M代码不到1s,Subline原生会卡近 ...

  8. 树状数组&线段树

    先是树状数组. 令这棵树的结点编号为C1,C2...Cn.令每个结点的值为这棵树的值的总和,那么容易发现: C1 = A1 C2 = A1 + A2 C3 = A3 C4 = A1 + A2 + A3 ...

  9. Sencha Touch中 xclass和xtype区别

    1.xclass 就是 Ext.create(xclass) 和 xtype一样的性质,不一定非要是自己创建的. 2.xtype是xclass的简称. 3.使用xtype前,你要new的对象,先要re ...

  10. hdu_1061_Rightmost Digit_201311071851

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...