在 Android Studio 中打开方法声明的键盘快捷键为:
- Mac:command+b
- Windows:control + b
MainActivity.java 文件中点击方法,右键→Go To→Declaration,即可跳转至方法声明处。
Android框架代码,Android团队所编写的。
定义 调用
方法的输入参数:零个或多个参数;
输出一个返回值:零个或一个。
Defining Methods
Javadoc,即Java注释。
//方法签名 private String createCalendarEventReminder(String eventName, String location, int minutesAway) //访问修饰符 + 返回数据类型 + 方法名 + 输入参数/(参数1数据类型 参数1变量名,参数2数据类型 参数2变量名,...)
返回数据类型void是有必要的,告诉程序编辑器无返回值,不必添加return语句。
arguments 实参
field 字段
/** * Calculates the price of the order. * * @param quantity is the number of cups of coffee ordered */ //@参数,可看作在注释中调用了参数,使代码编辑器可以对注释进行语法错误的检查 private void calculatePrice(int quantity) { int price = quantity * 5; return price; }
函数调用部分的输入参数形式应该和函数定义的相符合,否则视作语法错误。
Returning a Value from a Method,函数执行到return则返回,后续语句无效。
Java Language Keywords
java标识符(What is a Java Identifier?),包、类、接口、方法、变量的名称,可用于调用。
public void submitOrder(View view) { int price = calculatePrice();//将calculatePrice的返回值赋给price String priceMessage = "Total $" + price; priceMessage = priceMessage + "\nThank you!"; displayMessage(priceMessage); }
Java - Basic Operators
资源概览,支持多种屏幕
访问资源,编译应用时,aapt
会生成 R
类,其中包含 res/
目录中所有资源的资源 ID。
Java中的类 好比是房屋平面构图,对象实例 好比是不同的房屋。
What Is a Class?
What is 'Context' on Android?
Googlesource 中 TextView 的源代码 需FQ
Googlesource 中 ImageView 的源代码 需FQ
grepcode-Android 源代码目录 不必FQ
Chrome 扩展-Android SDK Search 需FQ使用
//简化的 TextView 代码 /** * Displays text to the user. */ public class TextView extends View { //类名,首字母大写驼峰式 // String value private String mText; //mText中的m表示成员变量 // Text color of the text private int mTextColor; //变量名,首字母小写驼峰式 // Context of the app private Context mContext; /** * Constructs a new TextView with initial values for text and text color. */ public TextView(Context context) { //构造函数 mText = ""; mTextColor = 0; mContext = context; } /** * Sets the string value in the TextView. * * @param text is the updated string to be displayed. */ public void setText(String text) { mText = text; } /** * Sets the text color of the TextView. * * @param color of text to be displayed. */ public void setTextColor(int color) { mTextColor = color; } /** * Gets the string value in the TextView. * * @return current text in the TextView. */ public String getText() { return mText; } /** * Gets the text color of the TextView. * * @return current text color. */ public int getTextColor() { return mTextColor; } }
使用构造函数创建对象
TextView priceTextView = new TextView(context); 对象数据类型 变量名 = new 对象数据类型(构造函数中的输入参数)
输入参数的顺序及类型需与构造函数中声明的相匹配
使用工厂方法模式创建对象
MediaPlayer player = MediaPlayer.create(context, R.raw.song); //对象数据类型 变量名 = 对象数据类型.工厂方法名称(输入参数) Toast toastMessage = Toast.makeText(context, "Hi", duration); //
Toasts ,即时弹出即时消失的消息
// Toast.makeText(this, "You cannot have more than 100 coffees", Toast.LENGTH_SHORT).show(); //Toast toast = Toast.makeText(context, text, duration); //toast.show();
在对象上调用方法 priceTextView.setText("News"); 对象数据类型.方法名称(输入参数)
类内调用/访问,实际上是this.方法,而this.往往被省略。
私有变量、私有方法可以在类内被读取。
java类的继承主要通过extends关键字来完成的。一旦继承后,子类将获得父类的成员属性跟成员方法。子类继承父类。
若需对继承的父类中的行为进行修改可使用@override 进行重写/重载/复写
//通过资源编号获取View类型对象
TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
//R.id.price_text_view为View类型对象,将其转换为TextView类型对象后,再赋给TextView类型的变量priceTextView。
详细了解 Java 中的类型转换(请参阅“Casting Objects”部分)
方法中传入的数据类型及返回的数据类型需查阅文档。
修改大量代码后,应及时运行进行检查。
这里,我们使用了 Log.i(),表示“信息”级别的日志。其他级别的选项如下所示:
- e(String, String)(错误)
- w(String, String)(警告)
- i(String, String)(信息)
- d(String, String)(调试)
- v(String, String) (详情)
logcat 命令行工具
Log开发文档
Red lines,对应用的可视化界面的非常详细的说明。
为什么学写代码这么难:每个编程初学者都需要了解的事情
- 甜蜜的蜜月期
- 困惑的悬崖
- 绝望的沙漠
- 重新崛起
StackOverflow忽略问题详述,直接查看已采纳的答案,效率更高。
官方文档中,直接阅读示例代码更高效。
//链式调用 EditText text = (EditText)findViewById(R.id.vnosEmaila); String value = text.getText().toString();//text.getText()方法得到Editable类型数据,再调用toString()方法将之转化为String类型数据。然后再赋给value
常见 Intent 指南 ,组件间传递动作、数据的机制。用于调用相关另一组件,但不必关心具体调用的是什么组件。如同抛出篮球但不必管何人接球。
Ctrl + / ,注释掉所有选中的代码块
Java 中常量命名:全大写_全大写
在发布应用前,请参考本地化检查清单。本地化,处理字符串,以适应用户的本地语言(用户可在设置—语言中选择本地语言)。
支持不同语言
es,西班牙语的语言代码;fr,法语的语言代码。
strings.xml 中 点击Open editor 或文件树中右键单击Open Translation Editor来打开翻译编辑器。单击globe图标添加新一组语言,翻译编辑器会自动创建相应语言版本的的strings.xml文件
Localizing with Resources,xliff标签可查阅此文档
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="order_summary_name">Nombre: <xliff:g id="name" example="Amy">%sxliff:g>string>
NumberFormat.getCurrencyInstance().format(price));//获取本地货币 priceMessage += "\n" + getString(R.string.thank_you);//原代码:priceMessage += "\nThank you!",Java代码中调用字符串资源
要详细了解样式资源,请参阅 样式和主题,Style Resource,注意,styles.xml 位于资源文件夹里。意味着,你可以重写相关格式并为不同尺寸的设备提供不同的属性。你只需在相关值文件夹里创建一个新的 styles.xml 文件。例如,如果你希望当用户使用平板电脑(屏幕宽至少为时 600 dp),HeaderTextStyle 显示更大的字体,可以保存一个新版本的 HeaderTextStyle 并放入 res/values-sw600dp/styles.xml 文件夹中。详情请参阅使用最小宽度限定符 。
标题高度、“含文字图标”参考 Material Design 单行列表规范中的规定
正文字体推荐大小参考
复选框应该距离屏幕左边缘 16dp。复选框的文字应该距离屏幕左边缘 72dp。这些是Material Design 规范中推荐的两大主要框线规格(距离左边缘 16dp 和 72dp)
可以使用Google Play中的 Keyline Pushing 应用(需FQ)来验证你的应用是否距离基线网格 8dp,你可以在 Google Play 上找到该应用。如果你打开网格,然后再回到你的应用中,你可以看到大部分情况下,我们的内容都符合 16dp 和 72dp 基线网格标准,这是因为 Android 提供的默认资源(例如复选框)已经内置了一定的内边距。
对 UI 应用样式和主题,主题可应用于所有Activity。
使用材料主题 ,点击此处详细了解 Material Design 系统主题背景。
维护兼容性 ,是如何定义与旧版 Android 系统兼容的主题背景。
Color palette ,material design palette
为平板设备开发 - 我们之前都在为手机设计应用,有了这些资源文件,实际上也可以用来为更大的设备,如平板设备定义布局。这里有一些文档,可以帮助你开始。
创建列表 - 你会发现 Android 应用经常带有用户可以点击的项目列表,例如收件箱的存储信息列表,或者是新闻故事列表。创建像这样的列表,使用像 RecyclerView 这样的视图时,列表很大程度会被优化。
创建卡片 - 卡片,不要与生日卡混淆,这是一种特殊的由 Material Design 启发的视图,这个视图具有圆角和轻微的阴影。如果你使用过 Google Now,你其实已经见过卡片了。想了解如何将卡片元素添加到你的应用,请看这个文档。
从网上加载东西 - 要从互联网上加载文字或图像?请查看 volley 库,它可以加载网络数据。Glide 是从网上加载图像的绝佳选择。你可以查看高级 Android 应用开发课程的 Libraries 这一节,看看如何使用这样的库。
在设备上存储数据 - 你的应用需要保存上次启动时的信息吗?也许你想保留用户用 Just Java 购买的所有咖啡的记录。要做到这一点,你需要保存与应用相关的一些数据。请查看 Android 文档中有关数据存储的内容。
发布通知 - 通知是用户在应用外看到的消息。它们出现在状态栏中。然后,你可以下拉状态栏,看到通知的详细信息。当你收到一个消息,例如,很多时候你的手机会发出蜂鸣声,并显示通知,让你可以轻松地查看文本。要了解更多关于设计的通知,查看这个 Android 指南。
后台操作 - 也许你想创建一个应用,即使不在屏幕上显示时它也在运行。例如,一个音乐播放器应用,你在手机上做其他事时也可以播放音乐。或者一个消息应用,可以下拉更新发送给你的消息。对于这一点,你需要去创建服务,请查看文档以了解更多的信息。
使用 Google Play 服务 - “使用 Google Play 服务”是 Google 的代码库,使你可以访问一些流行的功能,比如手机定位,身份验证,甚至健康数据。可以在这里查看最新版本。(需FQ)
使用位置 - 访问地点是由 Google Play 服务提供的众多功能之一。知道用户的物理位置,你的应用可以给他们更多其周围相关的数据,并定制自己的具体需求。例如,Google Maps 以这种方式可以发现附近的餐馆。查看我们的“基于 Android 的 Google 定位服务”课程,这是我们 Google Play 服务课程系列的一部分。
添加分析工具 - 你是否曾想过谁正在使用你的应用?或者他们是如何使用的?通过收集这些数据,你可以决定添加,更新或修复某些功能。Google Analytics 也包含在 Google Play Services 库中。在这里查看我们的 Android 上的 Google Analytics 课程。
为其他形式开发 - 应用开发不会在平板电脑停止, Android 操作系统(和你的应用)还会在手表上、电视上甚至是汽车上运行。你可以有应用的很多不同版本,因为它们具有不同的“形式”,例如,地图应用,可以在手机和手表上在你驾驶时为你指引方向。基本功能是相同的,但它为每个界面重新设计和调整。你可以查看我们的Android手表开发,Android电视开发和Android汽车开发等课程。
播放声音 - 无论是一个游戏的趣味片段还是播客应用的回放短片,向你的应用添加声音。请查看关于媒体回放的 Google 指南。
动画 - 一些小动画可以让你的视图拥有空间感,物理实在感是材料设计中必不可少的一个组成部分。查看文档中有关动画部分,添加交叉渐进,缩放和翻转动画到布局中。
为应用创建服务器后端 - 一个独立的应用很棒,但是如果它可以连接到自己的 Web 服务器,会更加强大。 Web 服务器可以帮助组织并处理来自世界各地的数据,并将其发送到用户的手机上。任何比闹钟更复杂的 Google 应用或多或少都会接触 Google 服务器。服务器可以存储一切事物,从日历事件到你朋友分享的图片。在我们的 用 Java 开发可规模化的应用 或 用 Python 开发可规模化的应用 课程中可以了解更多关于构建可扩展网络服务器的内容。
健身 - 你曾经是否想制作一个应用,来帮助用户掌控他们的健康和健身?Google Fit 是一个有关健身数据的 Google 开放平台。详情请见这个Google文档。(需FQ)