第一篇:android中主要用到的几种设计模式总结
模板模式,如Activity:
每次新建一个Actiivty时都会覆盖onCreate,onStart等方法,这些方法在
父类中就相当于一个模板
2、观察者模式
Listener都相当于一个观察者,对一些事件的响应都进行观察,当发现有响应就进行做相应的处理
3、单例模式
1.Application 单例模式
目的:
希望对象只创建一个实例,并且提供一个全局的访问点。结构是简单的,但是却存在一下情况;
1.每次从getInstance()都能返回一个且唯一的一个对象。2.资源共享情况下,getInstance()必须适应多线程并发访问。3.提高访问性能。
4.懒加载(Lazy Load),在需要的时候才被构造。
4、适配器模式
适配器模式是一种重要的设计模式,在 android 中得到了广泛的应用。适配器类似于现实世界里面的插头,通过适配器,我们可以将分属于不同类的两种不同类型的数据整合起来,而不必去根据某一需要增加或者修改类里面的方法。
在 android 中常见的适配器类有: BaseAdapter、SimpleAdapter 等,首先我们看看 android 应用层是如何使用适配器的:
综合 listview 和 gallery,发现它们有着类似的实现过程,在 setAdapter 里面获取
适配的 item 的个数,然后通知各自的控件构造这些 item,构造的时候会通过适配器来获取需要适配的 view。5,工厂模式
ndroid中的应用:创建位图 例如: Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search)这条语句相信我们经常用到,BitmapFactory顾名思义,就是位图工厂,专门用来将制定的图片转化为指定的位图Bitmap。因为图片来源的不同可能导致图片大小,格式类型等的多种多样,这样就导致了生成目标对象的复杂度,因此通过工厂统一的加工成同样大小,类型的”标准件“,大大简化了代码的复杂度与工作量。如activity 的基类父类等,抽象父类来生成对应的实际子类。6,代理模式
Android系统中利用AIDL定义一种远程服务时就需要用到代理模式。
第二篇:Android总结
Android四大组件:
Activity—表现屏幕界面
Service—后台服务
BroadcastReceiver—实现广播机制
ContentProvider—实现数据存储
Intent类:用来启动程序并传递信息的类
用于Activity、Receiver、Service之间进行交互的类,通过无参构造方法创建对象,增加其action、category、data、extra等属性进行信息传递,并通过Activity中的startActivity(Intent intent)进行界面的跳转;通过Context中的StartService(Intent intent)进行服务跳转;通过Context中的registerReceive(Intent intent)对广播进行注册,并通过sendBroadcast()进行无序消息发送,或可以通过SendOrderedBroadcast()进行有序的消息发送。Handler类:
用来发送和处理消息,并配合主线程完成UI的更新;消息Message/Runnable传递通过MessageQueue(消息队列,先进先出)进行传递,并通过Lopper进行接收,传递的消息可以为Message对象,也可以是Runnable对象;接收方法通过HandleMessage(Message msg)进行获取。SharedPreferences类:
一般用于第一次登录时的设置,或者是各个界面的一些小型格式设置,如字体等。是本地的小型共享数据库,可以通过Context的静态方法getSharedPreferences获得其对象,对象内的值均为键值对进行储存。通过SharedPreferences对象调用editor()获取SharedPreferences.Editor对象,向共享数据库中增加数据,putString(),并提交数据,commit();通过SharedPreferences对象获取共享数据库中的数据,getString()。
ViewPager:实现界面滑动的类;
通过设置OnPagerChangedListener设置ViewPager的监听事件;
实现流程:
①布局文件中设置ViewPager控件;
②代码中进行绑定控件;
③通过继承PagerAdapter抽象类进行设置适配器,并传递数据源;
④适配器中实现两个抽象方法,两个重写方法:getCount()—获取滑动界面的数量,isViewFromObject()—判断视图是否是来自于Object文件中;重写两个方法,分别为destoryItem—销毁指定位置的视图;InstantiateItem(),设置指定位置的视图;
Timer与TimerTask类:
Timer为计时器的类,通过无参构造方法可以获取对象,通过Timer.schedule(TimerTask task,long time)进行设置多久后执行某任务,当任务执行完后,取消计时的功能,Timer.cancle();TimerTask类为抽象类,实例化时,必须重写run方法;执行的内容,均在run方法中进行设置,并且执行时,已在子线程中进行执行。自定义View:用到的类有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;
抽象类,通过子类继承,获取对象;在布局文件中绑定后,通过代码,设置自定义View的属性;自定义View中,通过重写OnMeasure方法,对布局文件中的尺寸进行测量,并由View中的setMeasureDimenson()方法,进行数据的保存;通过重写Ondraw方法,进行绘图;当需要绘制动态图形时,使用计时器Timer的schedule(TimerTask,long time,delay time2)方法,在time时间后,每隔time2时间,重写执行run方法中的内容;将耗时的操作设置在run方法中,并通过View中的invalidate()方法刷新主线程中的绘的图形,通过postInvalidate()刷新子线程中的图形。数据库:
常用的数据库有Oracle,需要安装和配置的大型收费数据库;MySQL是中型数据库,同样需要安装配置,但不需要收费;Sqlite是小型免费的嵌入式数据库,占用内存低,最新版本为3.0。Sqlite数据库需要通过SqliteDatabaseOpenHelper进行创建数据库,并通过SqliteDatabase进行数据库的操作。辅助类是抽象类,通过继承,重写两个方法,并在子类的构造方法中通过OpenHelper的构造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)进行数据库的创建,在onCreate方法中,进行数据库表的创建,在onUpdate中进行数据库的版本更新。在数据库的操作类中,执行exect方法,通过sql语句对数据库进行操作。Create table student(_id integer primary key auto increament ,name text);insert into student(_id,name)values(1,zx);delete from student where _id=1;update student set _id=2 where name=zx;select *from student;ListView、GridView适配器的优化:
将布局文件中的控件进行封装,当视图加载时,判断可变视图是否存在,当不存在时,通过布局文件获取视图,并新建封装类,将地址通过setTag()进行发送;当视图存在时,重复利用地址—getTag()。反射:
存储数据的方式:
共享数据库、数据库、文件、网络、内容提供者
广播:
广播传播时,需要接收者、发送者、广播频道;根据发送者的发送方式不同,分为有序广播、无序广播;有序广播为接收者有接收顺序,根据设置的优先级不同,确定先后顺序,接收者同时也是发送者,向后面的广播发送消息,发送过程中,可以添加信息,也可以停止广播的传输;无序广播,接收者之间无联系,均从发送者处接收信息;广播在传输过程中,不能被添加信息,也不可能被停止。广播在发送前,需要对接收者进行注册,注册方式有两种,动态注册、静态注册。动态注册,是在代码中进行,通过Context对象调用静态方法进行注册,所有的广播均可以用动态注册,其生命周期依赖于应用,相对于静态注册,比较节省内存;静态方法在清单文件中进行注册,部分系统广播不能通过静态注册进行,其生命周期依赖于系统,当系统启动,即运行接收广播,较耗内存。广播接收者需要继承BroadcastReceiver,并实现抽象方法onReceive(),通过回调接口,进行数据的传输。注意:广播发送前,必须进行接收者的注册,并且,当显示跳转时,不需要意图过滤器。安卓布局:九种布局
线性布局,水平或垂直方向两种格式,主要特点为权重,即规定各控件在视图中的占有的比例;
相对布局,相对于父控件或兄弟控件的布局,各控件需指定相对位置; 绝对布局,指定各控件在视图中的绝对位置,几乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 帧布局:覆盖前面布局的布局,一般用于暂停按钮等; 风格布局:可以跨行、跨列的布局,占满换行;
左右侧滑:可以实现左右侧滑,通过设置主菜单和二级菜单设置左右两个菜单; 下拉刷新:设置下拉刷新、上拉加载的功能; 抽屉布局;
安卓版本及对应的API:
1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四层架构:
应用层:Java语言开发,主要从事App开发;
运行库层:Java语言与C语言,View视图、管理类等的开发; 架构层:C语言与Linux语言,各种框架、浏览器等; 内核层:Linux、C语言,开发各种驱动; 安卓四大组件:
Activity:界面,实现程序与用户之间的交换,有自己的生命周期,七个生命周期;4种启动模式 Service:
BroadcastReceive:三要素,发送者、接收者、发送频道(Intent);类型:有序(接收有序,有数据传送,可以拦截数据)、无序广播(相对);注册方式:静态注册,持久监听,占用内存比较高生命周期跟随系统,动态注册(代码中),所有广播都可以动态注册,部分系统广播不能动态注册,临时监听,占用内存较少,生命周期随应用进行;
ContentProvide:不能存放数据,五种存放数据方式之一,特点为:①为数据的获取等操作添加一个统一的接口②可以实现跨应用访问数据;③可以实现Android中通讯录、消息、音频、视频等的访问或操作;通过ContentReceive进行数据的访问,可以对数据进行增删改查操作。
动画: IO流: 序列化: AlertDialog:
Set实现类: 手机电量检测:
自定义SurfaceView:
自定义View:三个构造方法的区别
Message:Handler.obtain/new/Message.obtain
HttpUriConnection访问网络
gride 异步任务 动画
抽象类和接口 反射 克隆 序列化 侧滑的实现 数据库 Socket:
Gson解析
异步任务和子线程区别 WebView 版本更新 照片的圆角化
Collection与Collections Sql语句
MVP框架与MVC: TCP与UDP的区别: 一键分享的流程: Http协议的理解: 不使用框架访问网络: List集合与set集合: 自定义View的流程: 线性布局的特点: ViewPager的原理: 服务的启动方式:
Activity的启动方式: Xml数据解析:
第三篇:装修中用到的龙骨总结
枫雅装饰·为完美创造可能
装修中用到的龙骨总结
经常在装修中听到龙骨一词,不知道的人还以为是真的龙骨呢,但是实际并不是真的龙骨。真的龙骨是骨骼药材,但是装修术语中的龙骨只是作用貌似骨骼,起到一种支撑造型,固定结构的作用,总之除了不管是装修还是建筑中所说的龙骨都是作为骨架和基材的作用的。
小编最早了解龙骨不仅仅是药材还是从电视上看到的,里面提到船的最重要的部位是龙骨,一旦龙骨坏掉了那么整个船就不能再行驶了,这时候就大概知道了龙骨是船的骨架,负责支撑船结构的,但是却不知道装修中也有龙骨这个词。
枫雅装饰·www.xiexiebang.com 枫雅装饰·为完美创造可能
所以今天我们重点来讲一讲装修中所说的龙骨
首先装修中吊顶时需要用到龙骨的,这里的龙骨可木可钢,木龙骨容易造型,易于安装,所以经常用来做造型吊顶
钢的时候就变成轻钢龙骨,这是以连续热镀锌板带为原材料,经过冷弯工艺制作而成的金属骨架。这是比较受欢迎的装潢材料,防火性能和可塑性都很好,可以做出各种漂亮的造型。一般用作吊顶和隔墙。
铝合金龙骨是在铁皮烤漆龙骨上的改进,铝合金龙骨强度高,质量较轻,装饰性能好,易加工,安装便捷,也是吊顶装饰中的常用材料,可以起到支架,固定和美观作用。
接着是实木地板和实木多层地板安装需要打龙骨,这里的龙骨都是木龙骨,这里的龙骨只要是支撑地板,防止地板陷下去,防止踩着地板有声响。一般实木地板为什么比强化地板贵,其实不仅是因为是天然实木地板,实木地板要比强化地板多铺设一层龙骨,首先龙骨也是一笔费用,除去地板安装费龙骨还有安装费,所以就算最便宜的龙骨六七十平方算起来也要一千多块钱了。所以说龙骨作用还是挺大的。
其实除了装修吊顶和地板安装需要龙骨,还有别的许多地方也用到龙骨,就像造船用到龙骨就可以想到别的建筑物也应该需要龙骨来支撑,起到保护作用。
龙骨广泛应用于宾馆、候机楼。客运站、车站、剧场、商场、工厂、办公楼、旧建筑改造、室内装修设置、顶棚等场所。所以龙骨的种类不止一个,使用也非常普遍。不管是作用为什么,它都是起支撑
枫雅装饰·www.xiexiebang.com 枫雅装饰·为完美创造可能
保护作用,作为装修中的基材,就像心肝宝贝一样的存在,可以说如果装修中不用到龙骨是很不正常的,所以外行人也应该了解一下龙骨是什么。
枫雅装饰·www.xiexiebang.com
第四篇:Android WebView总结
Android WebView总结
1、添加权限:AndroidManifest.xml中必须使用许可“Android.permission.INTERNET”,否则会出web page not available错误。
2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);
3、设置WebView基本信息:
如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4、设置WevView要显示的网页:
互联网用:webView.loadUrl("");本地文件存放在:assets文件中
5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)
并重写其中的一些方法
shouldOverrideUrlLoading:对网页中超链接按钮的响应。
当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。
public boolean onKeyDown(int keyCoder,KeyEvent event){
if(webView.canGoBack()&& keyCoder == KeyEvent.KEYCODE_BACK){
webview.goBack();//goBack()表示返回webView的上一页面
return true;
}
return false;
}
第五篇:Android 课程总结
一、Android开发环境的搭建。
1、Android SDK的安装;
2、ADT的安装和配置;
3、Android 模拟器的配置。
二、编写第一个Android程序───Hello World(1学时)
1、创建一个Android应用程序的步骤;
2、Android 应用程序目录结构;
3、AndroidManidest.xml文件的作用;
4、Android相关资源文件的作用。
三、Activity及Activity和Intent(2学时)
1、Activity的主要作用;
2、创建一个Activity的方法;
3、在AndroidManifest.xml文件中的注册应用Activity的方法;
4、在Activity中添加控件的方法;
5、多个Activity之间的切换;
6、Intent的基本作用;
7、在一个Activity中启动另一个Activity的方法;
8、使用Intent在Activity中传递数据的基本方法。
四、常见控件的使用方法(基础)
1、TextView的使用方法;
2、EditText的使用方法;
3、Button的使用方法;
4、Menu的使用方法。
五、Activity的生命周期(2学时)
1、Activity的七个周期:
① OnCreate();② OnDestroy();③ OnPause();④ OnRestart();⑤ OnResume();⑥ OnStart();⑦ OnStop();
2、Task的基本概念;
3、Activity和Task之间的关系;
4、对话框风格的Activity的使用方法。
六、Activity的布局(3学时)
1、LinearLayout的使用方法;
2、TableLayout的使用方法;
3、LinearLayout和TableLayout的嵌套使用;
4、RelativeLayout的使用方法(重点、难点)
七、常用控件是使用方法二(2学时)
1、RadioGroup和RadioButton的使用方法;
2、CheckBox的使用方法;
3、Toast的基本用法。
4、ProgressBar的使用方法;
5、ListView的用法。
八、Handler的使用方法(2学时)
1、Handler的基本概念;
2、Handler的基本用法;
3、使用Handler更新ProgressBar
4、Handler与线程;
5、Bundle的用法;
6、在新线程中处理消息的方法。
九、SQLite使用方法
1、SQLite介绍;
2、SQLiteOpenHeper使用方法;
3、使用adb访问SQLite
4、增、删、改、查。
十、Android文件下载
1、使用HTTP协议下载文件;
2、将下载的文件写入SDCARD。
十一、Content Provider初步(2学时)
1、Content Provider的基本概念;
2、Uri;
3、Content Provider的实现方法。
十二、XML文件的解析方法
1、什么是SAX;
2、SAX的基本原理;
3、SAX常用接口;
4、SAX解析。
十三、广播机制(2学时)
1、Android的广播机制(图鉴);
2、BroadCastReceive的作用;
3、BroadCastReceive的编写方法;
4、BroadCastReceive的生命周期。
5、注册BroadCastReceive的方法;
6、Android内置BroadCastReceive Actions。
十四、WIFI网络的使用
1、什么是WIFI;
2、获取WIFI网卡的状态;
3、操作WIFI所需要的权限;
4、改变WIFI网卡的状态。
十五、Socket编程
1、什么是Socket;
2、Socket基本通信模型(见图);
3、使用基于TCP协议的Socket;
4、使用基于UDP协议的Socket。
十六、Service
1、Service是什么;
2、Service不是什么;
3、Service的生命周期;
4、启动和停止Service;