一个人的力量是有限的,而且也有自己的工作忙,不可能去另外整一个大更新,今天写的,可能过几个月就过时了,这是IT界的常态,所以还是得自己学会主动去获取知识的能力.但是切记一点,你是按需学习,而不是一个收破烂的,收藏一堆链接,收藏了你就会了,其实收集得越多,你会越浮躁!

2015 安卓基础入门学习问题Chapter 1 - 图1

安装Android Studio

这个比较简单,看流程就可以了的。但是我的电脑可能是内存不够,不能运行安卓虚拟机AVD,参考网上的解决方法,用GenyMotion模拟器。
2015 安卓基础入门学习问题Chapter 1 - 图2

AS项目目录结构分析,请阐述目录作用

  • libs
  • java
  • res
    • drawable
    • layout
    • values
    • mipmap
  • AndroidManifest.xml

.9图片

1.什么是.9图片?
答:图片后缀名前有.9的图片,如pic1.9.png这样的图片
2. .9图片能干嘛? 答: 在图片拉伸的时候特定的区域不会发生图片失真,而不失真的区域可以由我们自己绘制

UI设计

  • 2个工具
    • MockPlus
    • Android自带的DroidDraw工具

与工程相关的3个文件

MainActivity.java
activity_main
AndroidManifest.xml

MainActivity.java

  1. package jay.com.example.firstapp;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. public class MainActivity extends AppCompatActivity {
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. }
  10. }

为什么需要调用super.onCreate()方法?

super.onCreate(savedInstanceState)
super.onCreate(savedInstanceState)是调用父类Activity的onCreate()方法。
为什么要有super?
请看代码:
public class MainActivity extends Activity{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView();

}
上述代码中的protected void onCreate()方法其实是覆写了基类(Activity类)的onCreate方法,super.onCreate()是在调用基类中的onCreate方法。而在子类的onCreate方法中,不能直接调用onCreate(),因为这样做会产生递归,为了解决这一问题,java用super关键字表示超类的意思,当前类就是从超类继承而来的
savedInstanceState是保存当前Activity的状态信息,如果一个非running的Activity因为资源紧张而被系统销毁,当再次启动这个Activity时,可以通过这个保存下来的状态实例,即通过savedInstanceState获取之前的信息,然后使用这些信息,让用户感觉和之前的界面一模一样,提升用户体验。

2015 安卓基础入门学习问题Chapter 1 - 图3

布局文件:activity_main.xml:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools" #相当与一个代码提示器。但是现在已经不使用了。
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity">
  6. <TextView
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:text="@string/hello_world" />
  10. </RelativeLayout>

2015 安卓基础入门学习问题Chapter 1 - 图4

AndroidManifest.xml配置文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="jay.com.example.firstapp" >
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@mipmap/ic_launcher"
  7. android:label="@string/app_name"
  8. android:theme="@style/AppTheme" >
  9. <activity
  10. android:name=".MainActivity"
  11. android:label="@string/app_name" >
  12. <intent-filter>
  13. <action android:name="android.intent.action.MAIN" />
  14. <category android:name="android.intent.category.LAUNCHER" />
  15. </intent-filter>
  16. </activity>
  17. </application>
  18. </manifest>

2015 安卓基础入门学习问题Chapter 1 - 图5

安卓程序签名打包

为什么需要签名?

  • app升级:app升级的时候需要提供一样的签名,否则会被系统认为是两个不一样的应用。
  • 应用程序模块化。在安卓系统中,允许具有相同签名的多个应用程序在同一个进程里运行。所以我们可以将应用程序模块化部署,这样用户可以升级独立的模块。
  • 代码或者数据共享。相同签名的程序之间可以互相共享数据和代码。

    如何打包签名

    AS中build可以创建。

反编译APK获取源代码/资源

  1. apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件
  2. dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)
  3. jd-gui:查看2中转换后的jar文件,即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载: 反编译相关的三个工具.zip