大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、xml是什么?
成都创新互联是一家专注于成都做网站、网站制作、成都外贸网站建设与策划设计,海州网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:海州等地区。海州做网站价格咨询:13518219792
XML指可扩展标记语言
XML被设计用来传输和存储数据。
2、android中的xml用来做什么?
android中的xml有很多种,这里暂且只讨论layout目录下的xml文件
作用:存储数据
存储的数据,
从总体上:是view或者viewgroup的属性值
从小范围:是android原生布局或控件的属性值(当然也可以是存储用户自定义布局和属性的值)
3、xml的Schema
如不了解请移步W3CSchool
Schema详解
与DTD不同,XML Schema支持数据类型(data type)和命名空间(namespace)。
4、layout目录的xml文件
5、总结
android中所有以.xml文件后缀结尾的都是xml文件
只要是xml文件,肯定会符合xml树结构和xml语法
原文地址:
1.src:存放所有的*.java源程序。
2.assets:可以存放项目一些较大的资源文件,例如:图片、音乐、字体等。
3.res:可以存放项目中所有的资源文件,例如:图片( .png、 .jpg)、文本等。
4.res/drawable-hdpi:保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
5.res/drawable-ldpi:保存低分辩率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
6.res/drawable-mdpi:保存中等分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
7.res/layout:存放所有的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此配置。
8.res/values: 存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:
10.res/raw:自定义的一些原生文件所在目录,像音乐、视频等文件格式。存放直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用 Resources.openRawResource() ,参数是资源的ID也可以用,即R.raw.somefilename , Resources.getRawResource()`方法可以获得这些资源。
11.res/xml:用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可以使用Resources.getXML()方法获取。
12.res/anim:用于定义动画对象。存放定义了补间动画(tweened animation)或逐帧动画(frameby frame animation)的XML文件。(该目录下也可以存放定义property animations的XML文件,但是最好还是分开存放)
13.res/animator:存放定义了propertyanimations(android 3.0新定义的动画框架)的XML文件
14.res/color/:存放定义了颜色状态列表资源(ColorState List Resource)的XML文件
15.res/drawable/:存放定义了图片状态列表资源(ColorState List Resource)的XML文件
16.res/menu/:存放定义了应用程序菜单资源的XML文件。正确创建文件的方法:new Folder,名字menu,new Other——Android——XML,选择menu类型,填写名称,确定即可。菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用menu标签作为根节点。除了menu标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是item和group。
注意:
对于res/color和res/drawable这两个文件中的内容在这作一下详解:
首先说一下color文件夹,在这个文件夹下放的是color_selector.xml等文件,主要是用于背景色的selector,比如TextView中的textColor属性,点击改变TextView中的字体颜色,在这个文件中的文件color_selector.xml中定义如下:
表格布局,适用于多行多列的布局格式,每个TableLayout是由多个 TableRow 组成,一个 TableRow 就表示 TableLayout 中的每一行,这一行可以由多个子元素组成。实际上 TableLayout 和 TableRow 都是 LineLayout 线性布局的子类。但是 TableRow 的参数 android rientation 属性值固定为 horizontal ,且 android:layout_width=MATCH_PARENT , android:layout_height=WRAP_CONTENT 。所以 TableRow 实际是一个横向的线性布局,且所以子元素宽度和高度一致。
注意: 在 TableLayout 中,单元格可以为空,但是不能跨列,意思是只能不能有相邻的单元格为空.
在 TableLayout 布局中,一列的宽度由该列中最宽的那个单元格指定,而该表格的宽度由父容器指定。可以为每一列设置以下属性:
RelativeLayout 继承于 android.widget.ViewGroup ,其按照子元素之间的位置关系完成布局的,作为 Android 系统五大布局中最灵活也是最常用的一种布局方式,非常适合于一些比较复杂的界面设计。
注意:在引用其他子元素之前,引用的 ID 必须已经存在,否则将出现异常。
将所有的子元素放在整个界面的左上角,后面的子元素直接覆盖前面的子元素,所以用的比较少。
绝对布局中将所有的子元素通过设置 android:layout_x 和 android:layout_y 属性,将子元素的坐标位置固定下来,即坐标( android:layout_x , android:layout_y ) , layout_x 用来表示横坐标, layout_y 用来表示纵坐标。 屏幕左上角为坐标(0,0),横向往右为正方,纵向往下为正方。实际应用中,这种布局用的比较少,因为 Android 终端一般机型比较多,各自的屏幕大小。分辨率等可能都不一样,如果用绝对布局,可能导致在有的终端上显示不全等。
Application类在每一次开发当中是我们都会遇到的,每一个APP都会有一个Application实例,它拥有和APP一样长的生命周期,Application和APP一起“同生共死”,下面是我对Application的理解阐述。
Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个 Application对象,用来存储系统的一些信息。
Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。
通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。
我们可以测试一下,把APP切换到后台再打开,查看log打印的情况如下:
Context类也有这两个方法,但是Context类的方法只可以使用ComponentCallbacks,比Application少了一个onTrimMemory()回调。
注意:继承Application类,主要重写里面的onCreate()方法(android.app.Application包的onCreate()才是真正的Android程序的入口点),就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。
Android四大组件分别为activity、service、content provider、broadcast receiver。
一、android四大组件详解
1、activity
(1)一个Activity通常就是一个单独的屏幕(窗口)。
(2)Activity之间通过Intent进行通信。
(3)android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。
2、service
(1)service用于在后台完成用户指定的操作。service分为两种:
(a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。
(2)startService()与bindService()区别:
(a)started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。
(b)使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
(3)开发人员需要在应用程序配置文件中声明全部的service,使用service/service标签。
(4)Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。
3、content provider
(1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
(2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
(3)ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
(4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
(5)ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。
4、broadcast receiver
(1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
(2)广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。
(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在
android中酷炫的效果,都离不开动画的支持。这里我们详细介绍一下android中动画的分类。android的中动画分为帧动画、补间动画、属性动画。原理各不相同,实现的效果也大不相同。下面一一讲解三种动画。
帧动画顾名思义就是通过顺序一帧一帧播放图片从而产生动画效果,效果类似放电影。该动画缺点比较明显,就是如果图片过大过多会导致OOM。帧动画xml文件放置在drawable目录下而非anim文件夹下。
补间动画是通过对view进行旋转、缩放、渐变、透明度变化,而达到的一种动画效果。是一种渐进式动画。并且可以通过组合以上四种操作,完成复杂的自定义动画效果。缺点就是只是改变的view的展示状态,但是不会改变view的位置。例如我们将一个button通过位移想左移动100dp,然后停留在终点。但是我们可以发现展示的位置button点击无效果,不可以交互。而在button原始位置空白的地方点击会触发button的点击效果。也就是button本质还是在原来位置,只是展示左移了100dp。
透明度动画,通过改变view的透明度展示动画。对应AlphaAnimation和alphaxml标签
缩放动画,通过修改view的大小展示动画。对应ScaleAnimation类和scalexml表情
通过旋转view展示动画。对应RotateAnimation类和rotatexml标签
平移动画,更改view的展示位置展示动画。对应TranslateAnimation类和translatexml表情
应用动画xml配置
使用java类配置动画,具体参数类同xml参数,建议使用xml配置动画
属性动画本质是通过改变对象的属性(例如:x,y等属性),来实现动画的,所以基本上是无所不能的,只要对象有这个属性,就能实现动画效果。属性动画是在api11的新特性,通过动态的改变view的属性从而达到动画效果。虽然可以使用nineoldandroid库向下兼容,但是兼容本质是使用补间动画完成,也就是说不会更改view的属性,也不会更改view的位置。属性动画比较常用的类: ValueAnimator、ObjectAnimator、AnimationSet,其中ObjectAnimator是ValueAnimator的子类,而AnminationSet是动画集合
动画配置同样可以使用xml配置,参数类似,这里不做详细说明。
根据时间流逝百分比计算当前属性改变百分比。同xml配置动画中的 android:interpolator 属性配置,常见有LinearInterpolator(线性差值器)、AccelerateDecelerateInterpolator(加速减速差值器)
等。自定义需要实现 Interpolator 或者 TimeInterpolator 。Interpolator接口继承TimeInterpolator。
根据当前属性改变百分比计算改变后的属性值。属性动画特有的属性。自定义估值器需要实现 TypeEvaluator 接口。
可以对任意属性做属性动画,属性动画要求动画作用的对象提供该属性的get()和set()方法。因为属性动画本质就是根据外界传递的对象属性的初始值和终点值,然后根据估值器和差值器计算属性值,不断调用属性的set方法,通过时间的推移所传递的值,越来越近终点值。
注意:
使用ValueAnimator通过监听动画过程,自己改变对象属性完成动画