第一篇:android中主要用到的幾種設計模式總結
模板模式,如Activity:
每次新建一個Actiivty時都會覆蓋onCreate,onStart等方法,這些方法在
父類中就相當于一個模板
2、觀察者模式
Listener都相當于一個觀察者,對一些事件的響應都進行觀察,當發(fā)現(xiàn)有響應就進行做相應的處理
3、單例模式
1.Application 單例模式
目的:
希望對象只創(chuàng)建一個實例,并且提供一個全局的訪問點。結構是簡單的,但是卻存在一下情況;
1.每次從getInstance()都能返回一個且唯一的一個對象。2.資源共享情況下,getInstance()必須適應多線程并發(fā)訪問。3.提高訪問性能。
4.懶加載(Lazy Load),在需要的時候才被構造。
4、適配器模式
適配器模式是一種重要的設計模式,在 android 中得到了廣泛的應用。適配器類似于現(xiàn)實世界里面的插頭,通過適配器,我們可以將分屬于不同類的兩種不同類型的數(shù)據(jù)整合起來,而不必去根據(jù)某一需要增加或者修改類里面的方法。
在 android 中常見的適配器類有: BaseAdapter、SimpleAdapter 等,首先我們看看 android 應用層是如何使用適配器的:
綜合 listview 和 gallery,發(fā)現(xiàn)它們有著類似的實現(xiàn)過程,在 setAdapter 里面獲取
適配的 item 的個數(shù),然后通知各自的控件構造這些 item,構造的時候會通過適配器來獲取需要適配的 view。5,工廠模式
ndroid中的應用:創(chuàng)建位圖 例如: Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search)這條語句相信我們經(jīng)常用到,BitmapFactory顧名思義,就是位圖工廠,專門用來將制定的圖片轉化為指定的位圖Bitmap。因為圖片來源的不同可能導致圖片大小,格式類型等的多種多樣,這樣就導致了生成目標對象的復雜度,因此通過工廠統(tǒng)一的加工成同樣大小,類型的”標準件“,大大簡化了代碼的復雜度與工作量。如activity 的基類父類等,抽象父類來生成對應的實際子類。6,代理模式
Android系統(tǒng)中利用AIDL定義一種遠程服務時就需要用到代理模式。
第二篇:Android總結
Android四大組件:
Activity—表現(xiàn)屏幕界面
Service—后臺服務
BroadcastReceiver—實現(xiàn)廣播機制
ContentProvider—實現(xiàn)數(shù)據(jù)存儲
Intent類:用來啟動程序并傳遞信息的類
用于Activity、Receiver、Service之間進行交互的類,通過無參構造方法創(chuàng)建對象,增加其action、category、data、extra等屬性進行信息傳遞,并通過Activity中的startActivity(Intent intent)進行界面的跳轉;通過Context中的StartService(Intent intent)進行服務跳轉;通過Context中的registerReceive(Intent intent)對廣播進行注冊,并通過sendBroadcast()進行無序消息發(fā)送,或可以通過SendOrderedBroadcast()進行有序的消息發(fā)送。Handler類:
用來發(fā)送和處理消息,并配合主線程完成UI的更新;消息Message/Runnable傳遞通過MessageQueue(消息隊列,先進先出)進行傳遞,并通過Lopper進行接收,傳遞的消息可以為Message對象,也可以是Runnable對象;接收方法通過HandleMessage(Message msg)進行獲取。SharedPreferences類:
一般用于第一次登錄時的設置,或者是各個界面的一些小型格式設置,如字體等。是本地的小型共享數(shù)據(jù)庫,可以通過Context的靜態(tài)方法getSharedPreferences獲得其對象,對象內的值均為鍵值對進行儲存。通過SharedPreferences對象調用editor()獲取SharedPreferences.Editor對象,向共享數(shù)據(jù)庫中增加數(shù)據(jù),putString(),并提交數(shù)據(jù),commit();通過SharedPreferences對象獲取共享數(shù)據(jù)庫中的數(shù)據(jù),getString()。
ViewPager:實現(xiàn)界面滑動的類;
通過設置OnPagerChangedListener設置ViewPager的監(jiān)聽事件;
實現(xiàn)流程:
①布局文件中設置ViewPager控件;
②代碼中進行綁定控件;
③通過繼承PagerAdapter抽象類進行設置適配器,并傳遞數(shù)據(jù)源;
④適配器中實現(xiàn)兩個抽象方法,兩個重寫方法:getCount()—獲取滑動界面的數(shù)量,isViewFromObject()—判斷視圖是否是來自于Object文件中;重寫兩個方法,分別為destoryItem—銷毀指定位置的視圖;InstantiateItem(),設置指定位置的視圖;
Timer與TimerTask類:
Timer為計時器的類,通過無參構造方法可以獲取對象,通過Timer.schedule(TimerTask task,long time)進行設置多久后執(zhí)行某任務,當任務執(zhí)行完后,取消計時的功能,Timer.cancle();TimerTask類為抽象類,實例化時,必須重寫run方法;執(zhí)行的內容,均在run方法中進行設置,并且執(zhí)行時,已在子線程中進行執(zhí)行。自定義View:用到的類有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;
抽象類,通過子類繼承,獲取對象;在布局文件中綁定后,通過代碼,設置自定義View的屬性;自定義View中,通過重寫OnMeasure方法,對布局文件中的尺寸進行測量,并由View中的setMeasureDimenson()方法,進行數(shù)據(jù)的保存;通過重寫Ondraw方法,進行繪圖;當需要繪制動態(tài)圖形時,使用計時器Timer的schedule(TimerTask,long time,delay time2)方法,在time時間后,每隔time2時間,重寫執(zhí)行run方法中的內容;將耗時的操作設置在run方法中,并通過View中的invalidate()方法刷新主線程中的繪的圖形,通過postInvalidate()刷新子線程中的圖形。數(shù)據(jù)庫:
常用的數(shù)據(jù)庫有Oracle,需要安裝和配置的大型收費數(shù)據(jù)庫;MySQL是中型數(shù)據(jù)庫,同樣需要安裝配置,但不需要收費;Sqlite是小型免費的嵌入式數(shù)據(jù)庫,占用內存低,最新版本為3.0。Sqlite數(shù)據(jù)庫需要通過SqliteDatabaseOpenHelper進行創(chuàng)建數(shù)據(jù)庫,并通過SqliteDatabase進行數(shù)據(jù)庫的操作。輔助類是抽象類,通過繼承,重寫兩個方法,并在子類的構造方法中通過OpenHelper的構造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)進行數(shù)據(jù)庫的創(chuàng)建,在onCreate方法中,進行數(shù)據(jù)庫表的創(chuàng)建,在onUpdate中進行數(shù)據(jù)庫的版本更新。在數(shù)據(jù)庫的操作類中,執(zhí)行exect方法,通過sql語句對數(shù)據(jù)庫進行操作。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適配器的優(yōu)化:
將布局文件中的控件進行封裝,當視圖加載時,判斷可變視圖是否存在,當不存在時,通過布局文件獲取視圖,并新建封裝類,將地址通過setTag()進行發(fā)送;當視圖存在時,重復利用地址—getTag()。反射:
存儲數(shù)據(jù)的方式:
共享數(shù)據(jù)庫、數(shù)據(jù)庫、文件、網(wǎng)絡、內容提供者
廣播:
廣播傳播時,需要接收者、發(fā)送者、廣播頻道;根據(jù)發(fā)送者的發(fā)送方式不同,分為有序廣播、無序廣播;有序廣播為接收者有接收順序,根據(jù)設置的優(yōu)先級不同,確定先后順序,接收者同時也是發(fā)送者,向后面的廣播發(fā)送消息,發(fā)送過程中,可以添加信息,也可以停止廣播的傳輸;無序廣播,接收者之間無聯(lián)系,均從發(fā)送者處接收信息;廣播在傳輸過程中,不能被添加信息,也不可能被停止。廣播在發(fā)送前,需要對接收者進行注冊,注冊方式有兩種,動態(tài)注冊、靜態(tài)注冊。動態(tài)注冊,是在代碼中進行,通過Context對象調用靜態(tài)方法進行注冊,所有的廣播均可以用動態(tài)注冊,其生命周期依賴于應用,相對于靜態(tài)注冊,比較節(jié)省內存;靜態(tài)方法在清單文件中進行注冊,部分系統(tǒng)廣播不能通過靜態(tài)注冊進行,其生命周期依賴于系統(tǒng),當系統(tǒng)啟動,即運行接收廣播,較耗內存。廣播接收者需要繼承BroadcastReceiver,并實現(xiàn)抽象方法onReceive(),通過回調接口,進行數(shù)據(jù)的傳輸。注意:廣播發(fā)送前,必須進行接收者的注冊,并且,當顯示跳轉時,不需要意圖過濾器。安卓布局:九種布局
線性布局,水平或垂直方向兩種格式,主要特點為權重,即規(guī)定各控件在視圖中的占有的比例;
相對布局,相對于父控件或兄弟控件的布局,各控件需指定相對位置; 絕對布局,指定各控件在視圖中的絕對位置,幾乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 幀布局:覆蓋前面布局的布局,一般用于暫停按鈕等; 風格布局:可以跨行、跨列的布局,占滿換行;
左右側滑:可以實現(xiàn)左右側滑,通過設置主菜單和二級菜單設置左右兩個菜單; 下拉刷新:設置下拉刷新、上拉加載的功能; 抽屜布局;
安卓版本及對應的API:
1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四層架構:
應用層:Java語言開發(fā),主要從事App開發(fā);
運行庫層:Java語言與C語言,View視圖、管理類等的開發(fā); 架構層:C語言與Linux語言,各種框架、瀏覽器等; 內核層:Linux、C語言,開發(fā)各種驅動; 安卓四大組件:
Activity:界面,實現(xiàn)程序與用戶之間的交換,有自己的生命周期,七個生命周期;4種啟動模式 Service:
BroadcastReceive:三要素,發(fā)送者、接收者、發(fā)送頻道(Intent);類型:有序(接收有序,有數(shù)據(jù)傳送,可以攔截數(shù)據(jù))、無序廣播(相對);注冊方式:靜態(tài)注冊,持久監(jiān)聽,占用內存比較高生命周期跟隨系統(tǒng),動態(tài)注冊(代碼中),所有廣播都可以動態(tài)注冊,部分系統(tǒng)廣播不能動態(tài)注冊,臨時監(jiān)聽,占用內存較少,生命周期隨應用進行;
ContentProvide:不能存放數(shù)據(jù),五種存放數(shù)據(jù)方式之一,特點為:①為數(shù)據(jù)的獲取等操作添加一個統(tǒng)一的接口②可以實現(xiàn)跨應用訪問數(shù)據(jù);③可以實現(xiàn)Android中通訊錄、消息、音頻、視頻等的訪問或操作;通過ContentReceive進行數(shù)據(jù)的訪問,可以對數(shù)據(jù)進行增刪改查操作。
動畫: IO流: 序列化: AlertDialog:
Set實現(xiàn)類: 手機電量檢測:
自定義SurfaceView:
自定義View:三個構造方法的區(qū)別
Message:Handler.obtain/new/Message.obtain
HttpUriConnection訪問網(wǎng)絡
gride 異步任務 動畫
抽象類和接口 反射 克隆 序列化 側滑的實現(xiàn) 數(shù)據(jù)庫 Socket:
Gson解析
異步任務和子線程區(qū)別 WebView 版本更新 照片的圓角化
Collection與Collections Sql語句
MVP框架與MVC: TCP與UDP的區(qū)別: 一鍵分享的流程: Http協(xié)議的理解: 不使用框架訪問網(wǎng)絡: List集合與set集合: 自定義View的流程: 線性布局的特點: ViewPager的原理: 服務的啟動方式:
Activity的啟動方式: Xml數(shù)據(jù)解析:
第三篇:裝修中用到的龍骨總結
楓雅裝飾·為完美創(chuàng)造可能
裝修中用到的龍骨總結
經(jīng)常在裝修中聽到龍骨一詞,不知道的人還以為是真的龍骨呢,但是實際并不是真的龍骨。真的龍骨是骨骼藥材,但是裝修術語中的龍骨只是作用貌似骨骼,起到一種支撐造型,固定結構的作用,總之除了不管是裝修還是建筑中所說的龍骨都是作為骨架和基材的作用的。
小編最早了解龍骨不僅僅是藥材還是從電視上看到的,里面提到船的最重要的部位是龍骨,一旦龍骨壞掉了那么整個船就不能再行駛了,這時候就大概知道了龍骨是船的骨架,負責支撐船結構的,但是卻不知道裝修中也有龍骨這個詞。
楓雅裝飾·004km.cn 楓雅裝飾·為完美創(chuàng)造可能
所以今天我們重點來講一講裝修中所說的龍骨
首先裝修中吊頂時需要用到龍骨的,這里的龍骨可木可鋼,木龍骨容易造型,易于安裝,所以經(jīng)常用來做造型吊頂
鋼的時候就變成輕鋼龍骨,這是以連續(xù)熱鍍鋅板帶為原材料,經(jīng)過冷彎工藝制作而成的金屬骨架。這是比較受歡迎的裝潢材料,防火性能和可塑性都很好,可以做出各種漂亮的造型。一般用作吊頂和隔墻。
鋁合金龍骨是在鐵皮烤漆龍骨上的改進,鋁合金龍骨強度高,質量較輕,裝飾性能好,易加工,安裝便捷,也是吊頂裝飾中的常用材料,可以起到支架,固定和美觀作用。
接著是實木地板和實木多層地板安裝需要打龍骨,這里的龍骨都是木龍骨,這里的龍骨只要是支撐地板,防止地板陷下去,防止踩著地板有聲響。一般實木地板為什么比強化地板貴,其實不僅是因為是天然實木地板,實木地板要比強化地板多鋪設一層龍骨,首先龍骨也是一筆費用,除去地板安裝費龍骨還有安裝費,所以就算最便宜的龍骨六七十平方算起來也要一千多塊錢了。所以說龍骨作用還是挺大的。
其實除了裝修吊頂和地板安裝需要龍骨,還有別的許多地方也用到龍骨,就像造船用到龍骨就可以想到別的建筑物也應該需要龍骨來支撐,起到保護作用。
龍骨廣泛應用于賓館、候機樓。客運站、車站、劇場、商場、工廠、辦公樓、舊建筑改造、室內裝修設置、頂棚等場所。所以龍骨的種類不止一個,使用也非常普遍。不管是作用為什么,它都是起支撐
楓雅裝飾·004km.cn 楓雅裝飾·為完美創(chuàng)造可能
保護作用,作為裝修中的基材,就像心肝寶貝一樣的存在,可以說如果裝修中不用到龍骨是很不正常的,所以外行人也應該了解一下龍骨是什么。
楓雅裝飾·004km.cn
第四篇: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要顯示的網(wǎng)頁:
互聯(lián)網(wǎng)用:webView.loadUrl("");本地文件存放在:assets文件中
5、如果希望點擊鏈接由自己處理,而不是新開Android的系統(tǒng)browser中響應該鏈接。給WebView添加一個事件監(jiān)聽對象(WebViewClient)
并重寫其中的一些方法
shouldOverrideUrlLoading:對網(wǎng)頁中超鏈接按鈕的響應。
當按下某個連接時WebViewClient會調用這個方法,并傳遞參數(shù):按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest6、如果用webview點鏈接看了很多頁以后,如果不做任何處理,點擊系統(tǒng)“Back”鍵,整個瀏覽器會調用finish()而結束自身,如果希望瀏覽的網(wǎng)頁回退而不是退出瀏覽器,需要在當前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開發(fā)環(huán)境的搭建。
1、Android SDK的安裝;
2、ADT的安裝和配置;
3、Android 模擬器的配置。
二、編寫第一個Android程序───Hello World(1學時)
1、創(chuàng)建一個Android應用程序的步驟;
2、Android 應用程序目錄結構;
3、AndroidManidest.xml文件的作用;
4、Android相關資源文件的作用。
三、Activity及Activity和Intent(2學時)
1、Activity的主要作用;
2、創(chuàng)建一個Activity的方法;
3、在AndroidManifest.xml文件中的注冊應用Activity的方法;
4、在Activity中添加控件的方法;
5、多個Activity之間的切換;
6、Intent的基本作用;
7、在一個Activity中啟動另一個Activity的方法;
8、使用Intent在Activity中傳遞數(shù)據(jù)的基本方法。
四、常見控件的使用方法(基礎)
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協(xié)議下載文件;
2、將下載的文件寫入SDCARD。
十一、Content Provider初步(2學時)
1、Content Provider的基本概念;
2、Uri;
3、Content Provider的實現(xiàn)方法。
十二、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網(wǎng)絡的使用
1、什么是WIFI;
2、獲取WIFI網(wǎng)卡的狀態(tài);
3、操作WIFI所需要的權限;
4、改變WIFI網(wǎng)卡的狀態(tài)。
十五、Socket編程
1、什么是Socket;
2、Socket基本通信模型(見圖);
3、使用基于TCP協(xié)議的Socket;
4、使用基于UDP協(xié)議的Socket。
十六、Service
1、Service是什么;
2、Service不是什么;
3、Service的生命周期;
4、啟動和停止Service;