美文网首页
Head First Android Development笔记

Head First Android Development笔记

作者: lo0o | 来源:发表于2015-12-28 10:35 被阅读0次

    一、Diving In

    1. 一个典型的Android APP组成:Layouts—页面,XML格式;Activity—定义了APP行为,Java code编写;extra resources,APP使用的一些外部组员,如声音、图像文件等。

    2.Android平台结构,从下往上。

    Linux Kernel,提供驱动、安全和内存管理等功能。

    C和C++ libraries,提供上层framwork支持

    Android Runtime,运行java程序的虚拟机,每个app一个进程。

    Application Framework,提供上层APP接口

    Application,上层APP

    3.APP结构

    root folder就是project名,主要关注的是app folder。

    app/build是android studio创建。

    app/build/generated/source/r/debug/com.xx.xx/R.java文件,Android使用该文件trackapp的资源内容。

    app/src/main/java是activities所在。

    app/src/main/res/layout是layouts文件所在。

    app/src/main/res/values是资源文件,包括string等。

    app/src/main/AndroidManifest.xml文件包含了一个app所需的信息,如包含的组件、需要的libraries和一些其他的声明。

    4.activity_main.xml文件结构

    <RelativeLayout></RelativeLayout>标签告诉android按格式显示其中内容。

    <TextView />显示text

    5.layout文件包含的string放置在app/src/main/res/values/string.xml文件中,layout中引用使用"@sring/string_name"的方式。

    这样用的原因是方便global change。

    <string name="string_name">string real name</string>


    二、Apps That Do Something

    1.layout中active_*.xml属性

    android:id="@+id/myid",components的id好,activity code中引用id操作该component。

    android:text="Mytext",components显示

    android:layout_width="wrap_content"和android:layout_height="wrap_content"制定component的宽高,wrap_content表示将内容显示的big enough。

    2.下拉菜单spinner

    layout中,使用spinner标签<Spinner />,元素中包含android:entries="@array/beer_colors"。

    string.xml中使用string-array,<string-array name="beer_colors"><item>xx</item></string-array>来表示列表。

    3.编写activity

    1. layout的button标签中加上android:onClick="onClickName",这里的onClickName实际上是activity中click button动作后实现的程序内容的函数名

    2. activity初始的函数

    public class MainActivity extends Activity{

    ----protected void onCreate(Bundle savedInstanceState){

    --------super.onCreate(savedInstanceState);

    --------setContentView(R.layout.activity_main);//告诉android使用哪个layout

    ----}

    }

    3.添加一个onClickName函数去实现点击按钮后的动作

    public void onClickName(View view){//onClickName是layout中button标签中onClick元素值

    }

    4.使用findViewById()获取layout中“@+id/xx”对应元件中的值,如TextView brands = (TextView) findViewById(R.id.brands);


    三、State Your Intent

    讲述建立多个layout的APP如何实现。

    1.AndroidManifest.xml文件,所有的acitivy都应该在其中declared

    <action android:name="android.intent.action.MAIN">指定APP的主activity

    <category android:name="android.intent.category.LAUNCHER">表示这个activity可以用来启动APP

    2.使用intent去start另一个activity。

    import android.content.Intent;

    Intent intent = new Intent(Source.this, Target.class);

    startActivity(intent);

    3.两个activity之间传递消息

    在传递者中,intent.putExtra("message", MessageText);

    在接收者中,Intent intent = getIntent(); String messageText = intent.getStringExtra("message");

    4.使用action在不同app间传递消息

    Intent intent = new Intent(Intent.ACTION_SEND);

    intent.setType("text/plain");

    intent.putExtra(Intent.EXTRA_TEXT, message);

    5.每个app响应intent:android从每个app的AndroidManifest.xml中查找相应的intent-filter

    <intent-filter>

    ----<action android:name="android.intent.action.SEND" />

    ----<category android:name="android.intent.category.DEFAULT" />

    ----<data android:mimeType="*/*" />

    </intent-filter>

    四、Being an Activity

    1.Hander来操作多个线程,schedule code,且不会block主thread。

    2.解决手机rotated screen造成activity recreated的方法

    1. AndroidManifest.xml中<activity>标签中加入android:configChanges="orientation|screenSize"

    2. save current state,

    public void onSaveInstanceState(Bundle savedInstanceState){

    ----savedInstanceState.putType("typevalue",typevalue);

    }

    使用时,在onCreate开头,setContentView后,

    if(savedInstanceState != null){

    ----typevalue = savedInstanceState.getType("typevalue");

    }

    十三、At your service

    1.两种类型的service,

    1. Started service,运行到操作结束,即使activity destroy自己后,仍会运行。如大文件的下载等。使用时继承IntentService类。

    2. Bound service,运行周期在bound activity时,可以和activity进行交互。使用时继承Service类。

    相关文章

      网友评论

          本文标题:Head First Android Development笔记

          本文链接:https://www.haomeiwen.com/subject/gabbhttx.html