zoukankan      html  css  js  c++  java
  • dsad

    # 一.安卓第一天笔记 
    ##安卓基本介绍
    ####1.安卓项目未编译前的项目的必须基本结构

        HelloWorld
        |——libs
        |——res
        |    |——drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
        |    |——layout
        |    |——values
        |
        |——src
        |    |——cn
        |    |————itcast
        |    |——————helloworld
        |    
        |——AndroidManifest.xml

    ####2.对于R.java文件的理解

        R.java文件可以理解为Android应用的资源字典
        (1)每类资源都对应这R类中的一个内部类
        (2)每个具体资源项都对应于内部类的一个public static final int类型的Field
        注意:不要手动修改R.java文件的任意内容

    ####3.对于res目录的理解
    >Android应用的res目录是一个特殊的文件夹,存放着Android应用的全部资源,是资源仓库。包括图片资源,字符资源,颜色资源,尺寸资源,样式资源等等,不同的资源放到res不同文件夹。Android按照约定对res进行扫描生成R.java文件。

    ####4.在Java与XML中使用res资源仓库的资源,即资源引用
    > Java:AAPT为Android项目自动生成的R.java文件,每个资源项对应于各个资源内部类(不同种类资源生成各自的资源内部类),在Java代码中可通过[R.<资源的内部类名称>.<资源名称>]来获取对应的资源。如R.string.app_name引用到"HelloWorld"字符串常量。

    > XML:XML文件中使用资源更为简单,按照以下格式访问即可:[@<资源对应的内部类的类名>/<资源项的名称>],例如:引用常量"HelloWorld"字符串常量,我们可以这样书写:@string/app_name

    ####5.重点:组件分配标识符
    >当在XML文件中想使用自定义的标识符时,这些标识符无须使用专门手段来进行定义,从而才能使XML文件与R.java文件获取到该标识符资源。只需要直接在XML文档中按照如下格式分配标识符即可:
    >
    >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@+id/<标识符的代号>&nbsp;&nbsp;&nbsp;&nbsp;例如,在XML文件中可以使用如下代码为一个组件分配一个特定的标识符:android:id="@+id/ok"
    >
    >分配完组件标识符后,使用该标识符有两种方法,XML与Java获取,
    >>在XML文件上获取该组件,可通过xml资源引用的方式来引用它,格式为:@id/<标识符代号>&nbsp;&nbsp;&nbsp;例如,"@id/ok"

    >>在Java的代码中获取该组件,可以通过调用Activity中的findViewById()方法来进行获取组件即可,如Button btn = (Button)this.findViewById(R.id.ok);

    ####6.AndroidManifest.xml文件的理解
        
        AndroidManifest.xml清单文件是每个Android项目必需的,它属于整个项目应用的的全局描述文件。
    >通常包含如下信息:
    >>1.应用程序包名,该包名将会作为该应用的唯一标识(非常重要),对外的显示名称可以重复,但包名是不能重复。

    >>2.应用程序所包含的应用框架的四大组件详细信息,如Activity,Service,BroadcastReceiver,ContentProvider等。

    >>3.应用程序最低兼容版本,编译的目标版本

    >>4.应用程序使用系统所需的权限声明,如打电话,发短信等都是需要获得用户给予的权限才能使用。
        
    >>5.其他程序访问该程序所需要的权限声明。    

    ####7.应用程序权限的说明
    >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个Android应用可能需要权限才能调用Android系统的功能,同样一个Android程序也可能被别人所调用,因此它同样需要声明调用自身所需要的权限。
    >>1.声明运行应用本身所需要的权限
    >>>通过在AndroidManifest.xml的<manifest.../>元素添加<uses-permission../>子元素即可为程序本身添加权限声明
    >>>>例如:添加打电话声明:<uses-permission android:name="android.permission.CALL_PHONE" />

    >>2.声明调用该应用所需要的权限
    >>>需要通过为应用的各个组件元素,如<activity../>添加<uses-permission../>子元素即可声明其他程序调用改程序所需要的权限。
    >>>>例如:在<activity../>的组件元素中添加发送短信的权限:<uses-permission android:name="android.permission.SEND_SMS" />

    ####8.查询程序权限的方法
        
        通过SDK的docs下index.html网页,点击进入API,点击android包,查看Manifest.permission类即可,里面有全部有关用户权限的所有内容。

    ##安卓四大组件基本理解
        
    ####1.Activity和View
    >Activity是Android应用中负责与用户交互的组件,与Jframe本身可以设置布局管理器不同,Activity只能通过setContentView(view)来显示指定的组件。

    >View组件是所有UI控件,容器控件的基类,View组件就是Android应用中用户实实在在看到的部分。但View组件需要放到容器组件中,或者使用Activity将它显示出来。
    >>指定View通过Activity显示出来,可以通过setContentView方法来显示。
    >>>setContentView(View view)可接受任意一个View对象作为参数,如:
    >>>

    >>>//创建一个线性布局管理器
    >>>LinearLayout layout = new LinearLayout();
    >>>//设置该Activity显示layout
    >>>setContentView(layout);

    >>>若在资源中存在相应的布局,直接调用setContentView(R.layout.main),即调用名字为main的布局。

        注意点:
        1.Activity的父类是Context
        2.Layout的父类是ViewGroup,ViewGroup的基类是View
        3.事实上,Activity是Window的容器,Activity包含一个返回该Activity窗口的方法getWindow(),若应用程序不调用setContentView()方法设置窗口显示内容,该程序为一个空窗体。
        4.Activity包含一个setTheme(int resid)方法设置其窗体的风格。(包括不显示ActionBar,以对话框形式显示窗口等)

    ####Service
        
    >&nbsp;&nbsp;&nbsp;&nbsp;Service与Activity的地位相等,表明它是Android的一个独立组件,但它通常是位于后台,无须与用户进行交互,所以Service组件无图形用户界面。使用Service需要继承Service基类,一个Service组件被运行起来后,拥有自己独立的生命周期。
    >>Service组件的作用:为其他组件提供后台服务或监控其他组件的运行状态。

    ####BroadCastReceiver
    >BroadCastReceiver,广播消息接收器,是重要的组件。非常类似事件编程中的监听器,但不同的是,普通事件监听器的事件源是程序中的对象;而BroadCastReceiver监听的事件源是Android应用中的其他组件。

    >使用BroadCastReceiver组件需要实现自己的BroadCastReceiver子类,并重写onReceive(Context context,Intent intent)方法。当其他组件通过sendBroadCast(),sendSickyBroadcast()或sendOrderBroadcast()方法发送广播,通过设置IntentFilter,即可对其中一个或多个方法进行监听,触发onReceive(Context context,Intent intent)方法。

    >开发者实现自己的BroadCastReceiver后,可以通过以下方式进行注册
    >>1.在Java代码中通过Context.registReceiver()方法注册BroadCastReceiver。

    >>2.在AndroidMainfest.xml文件中通过<recevier../>元素完成相应的注册。


    ####ContextProvider
    >ContextProvider,是Android系统为跨应用的数据交换提供一种通用标准。

    >使用方法:只需要继承抽象类ContextProvider后实现抽象方法即可。

    >通常与ContextProvider结合使用的是ContextResolver,一个app使用ContextProvider暴露自己的数据,另一个app使用ContextResolver来访问数据。

    ##Intent与IntentFilter
    >&nbsp;&nbsp;&nbsp;&nbsp;Intent并不是Android的应用组件,它是Android应用内不同组件之间通讯的载体。当Android运行时需要连接不同的组件是,通常需要借助Intent来实现。

    >&nbsp;&nbsp;&nbsp;&nbsp;Intent可以启动应用中另一个Activity,也可以启动一个service组件,还可以发送一条广播消息触发系统BroadCastReceiver。BroadCastReceiver,Service,Activity三个组件都是通过Intent作为载体来进行通信。注意,不同组件的Intent的使用机制不同。

    >>Intent启动Activity,调用Context(Activity为Context的子类)的startActivity(Intent intent)或startActivityForResult(Intent intent,int requestCode)方法,其中,intent包含需要启动Activity的信息。

    >>Intent启动Service,调用Context的startService(Intent intent)或startActivityForResult(Intent intent,...)方法,同样intent包含需要启动Service的信息。

    >>触发一个BroadCastReceiver时,调用Context的sendBroadCast(Intent intent)或sendSickyBroadcast(Intent intent),sendOrderBroadcast(Intent intent)来发送广播,内部intent包含相应触发信息在里面。

    >当一个组件通过Intent启动或触发另一个组件的的"意图"后,该意图会分为两个部分。
    >>1.显示Intent,需要明确指定需要启动或者触发的组件类名,系统无须做任何的解析,直接找到组件启动或触发它。

    >>2.隐式Intent,隐式Intent只是指定需要启动或触发的组件需要什么条件,系统需要对intent进行解析,当系统找到该组件时,才能启动或触发它。

  • 相关阅读:
    MySQL中的事务
    MySQL中的锁
    MySQL查询更新所有满足条件的数据
    MySQL存储引擎
    MySQL架构
    MySQL中存储json格式数据
    Java反射破坏单例模式
    合唱队(华为OJ)
    Java实现生产者消费者问题
    Spring IOC + AOP 的实现
  • 原文地址:https://www.cnblogs.com/canceler/p/4727872.html
Copyright © 2011-2022 走看看