1、64位Android Studio打開的是studio64.exe,不是studio.exe。
2、ctrl+alt+t快捷鍵調出 try catch模塊
Alt+回車 自動生成 alt+enter查看出錯的建議解決方法
ctrl+alt+m 會將選定的代碼封裝成方法提出來
(Ctrl+R || Ctrl+H)“替換”名字功能
http://hukai.me/android-training-course-in-chinese/index.html#userconsent#
按住“shift”鍵再按下“”鍵可以打出||
3、快捷鍵
http://www.android-studio.org/index.php/docs/experience/142-androidstudio-shortcut-keys
4、AIDL(Android接口定義語言)的使用範圍:IPC 多個應用程序 多線程
Binder的使用範圍:只有IPC(進程間通信) 多個應用程序 沒有多線程
Messenger的使用範圍:只有IPC 沒有多線程
即想要通過IPC讓多個應用程序來訪問你的服務,並且該服務處理多線程時才有必要用AIDL
android studio創建AIDL服務具體步驟如下:
http://www.gezila.com/tutorials/58289.html
Android Studio默認是不編譯的,沒有自動編譯,想要得到生成對應的aidl文件需要去編譯一下即點圖標
IRemoteService類extends Service
5、
如何在androidstudio中查看當前使用的gradle版本和gradle插件版本?http://www.zhihu.com/question/24648316
將Eclipse代碼導入到AndroidStudio的方式
http://www.open-open.com/lib/view/open1419597450031.html
6、GitCode
http://www.android-doc.com/guide/components/index.html?q=aidl#q=aidl
7、 Layout_開頭的布局屬性都是交給父容器的,沒有Layout_開頭的都是本身的屬性。
LinearLayout中的Layout_weight屬性,首先按照控件聲明的尺寸進行分配,然後再將剩下的尺寸按weight分配。即首先減去控件聲明的尺寸,剩下的尺寸按比例分配。
8、Monkey runner
Monkey runner和 Monkey是Android SDK中自帶的兩個測試工具。monkey主要應用在壓力和可靠性測試上,運行該命令可以隨機地向目標程序發送各種模擬鍵盤事件流,並且可以自己定義發送的次數,以此觀察被測應用程序的穩定性和可靠性,應用起來也比較簡單,記住那幾個命令就行了。而monkeyrunner呢,相比之下會強大一些,它主要可應用於功能測試,回歸測試,並且可以自定義測試擴展,靈活性較強,並且測試人員可以完全控制。
http://blog.csdn.net/zm2714/article/details/7980634
http://www.linuxdiyf.com/linux/18510.html
http://www.xuebuyuan.com/1613688.html
9、Android安全
http://www.cnblogs.com/aimeng/p/3361348.html
http://blog.csdn.net/asmcvc/article/details/11595783系列文章
10、android studio中如何導入github項目
不用換gradle版本號或全部拷貝下載源碼,只需要按照github上read.me介紹的步驟一步一步做,然後調錯直到改好就行。
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0623/3097.html
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0623/3097.html
http://blog.csdn.net/j236027367/article/details/48802493
http://blog.isming.me/2014/12/12/import-library-to-android-studio/
11、學習
http://blog.csdn.net/shenyuanqing/article/details/47682025(AS中導入GitHub開源項目SlidingMenu)
http://jingyan.baidu.com/article/48206aeafc002b216bd6b35d.html(講述如何開發一個用戶登錄界面)
http://www.cnblogs.com/aimeng/p/3361348.html(android手機衛士)
12、 Xutils和Xutils3的基本使用
Xutils是Android的第三方開源框架,包含了很多實用的Android工具類。
http://blog.csdn.net/abc6368765/article/details/50699334
http://blog.csdn.net/wangsidadehao/article/details/50757211
http://www.cnblogs.com/dreamos/p/5010821.html
13、在實現從歡迎界面到主界面跳轉時:
注意:MainActivity中xml文件有2個(一個調用另一個),要生成無用的那個,直接用有用的那個xml布局,不然會一直崩潰。
14、進入主界面之後實現Tabs滑動切換
http://blog.csdn.net/liguojin1230/article/details/45568185
http://blog.163.com/shexinyang@126/blog/static/13673931220157552844552/
見慕課網http://www.imooc.com/course/list?c=android&page=3
http://www.jcodecraeer.com/a/opensource/2016/0518/4272.html
15、優化Android布局include、merge 、ViewStub
http://blog.csdn.net/xyz_lmn/article/details/14524567
16、build.gradle中jcenter():
兩個標准的Android library文件服務器:jcenter 和 Maven Central。不管是jcenter還是Maven Central ,兩者都是Maven倉庫。雖然jcenter和Maven Central 都是標准的 android library倉庫,但是它們維護在完全不同的服務器上,由不同的人提供內容,兩者之間毫無關系。
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0623/3097.html
17、Android中UI線程與後台線程交互設計的幾種方法
http://blog.csdn.net/yony2011/article/details/11952735
1、handler 2、AsyncTask 3、View.PostDelayed(Runnabe,long) 4、View.Post(Runnable) 5、Activity.runOnUIThread(Runnable)
http://www.cnblogs.com/devinzhang/archive/2011/12/30/2306980.html
http://blog.csdn.net/amazing7/article/details/51424038
http://www.jb51.net/article/43360.htm
18、Android網絡(3):HttpClient作客戶端,Tomcat Servlet作服務器的交互示例
http://blog.chinaunix.net/uid-25799257-id-3774047.html(前端Android發送請求,這裏URL=http://10.81.98.120:8080/TaxiServlet/ login)
http://blog.chinaunix.net/uid-25799257-id-3774015.html
(後台處理,這裏後台項目為TaxiServlet)
其中在前端Android中根據輸入的用戶名和密碼,得到並封裝 Map<String, String> params = new HashMap<String, String>();
params.put("user_name", userName);
params.put("password", password);
String encode = "utf-8";
然後調用HttpUtils 工具類的sendMessage(params, encode)方法發送請求。int responseCode = HttpUtils.sendMessage(params, encode);得到HttpUtils類返回的響應碼(注意此處得到的是HttpUtils類返回的數據,不是由網絡直接返回的數據),進行判斷和後續處理操作。
在HttpUtils 類中封裝的有對數據上傳網絡的統一的步驟和格式。比如:
private final static String PATH = "http://10.0.2.2:8000/TaxiServlet/login";
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setConnectTimeout(3000);
urlConnection.setRequestMethod("POST"); ///< 設置請求方式
urlConnection.setDoInput(true); ///< 表示從服務器獲取數據
urlConnection.setDoOutput(true); ///< 表示向服務器發送數據
最後就能 ///< 獲得服務器的響應結果和狀態碼
int responseCode = urlConnection.getResponseCode();
//System.out.println(""+ responseCode);
if (200 == responseCode)
{ return changeInputStream(urlConnection.getInputStream(), encode); }
根據得到的網絡返回的數據urlConnection.getInputStream(),進行自己定義的changeInputStream()方法處理返回給Android端調用此方法處。至此,從前端Android到網絡URL處已打通。
1. 在後台,因為URL= http://10.81.98.120:8080/TaxiServlet/login,故需去找部署在http://10.81.98.120:8080/處的TaxiServlet項目。本次用的tomcat部署在自己的電腦上,連的WLAN的網絡地址為10.81.98.120即localhost。在TaxiServlet項目中的web.xml中設置<web-app>
2. <servlet>
3. <servlet-name>login</servlet-name> <! 名字隨便 >
4. <servlet-class>com.servlet.login.LoginAction</servlet-class> <! servlet類名>
5. </servlet>
6.
7. <servlet-mapping>
8. <servlet-name>login</servlet-name>
9. <url-pattern>/login</url-pattern> <! url訪問虛擬路徑,最後我們就是通過工程名/login進行訪問的,像這樣http://127.0.0.1:8000/LoginAction/login>
10. </servlet-mapping>
1. 注意url-pattern(url訪問虛擬路徑)與URL地址一致,都是/login。故轉到相同servlet-name的servlet-class的com.servlet.login.LoginAction類中進行後台數據的處理。在後台LoginAction類中因為前端用post方法上傳,故也用post解析處理,
2. PrintWriter out = res.getWriter();
3. String username = req.getParameter("user_name");
4. String password = req.getParameter("password");
由解析得到的數據(這裏是 username、password)給出判斷處理,並最後又out給出返回的響應。至此,後端也打通了。整個過程通過Android端的主界面類LoginActivity.java和HttpUtils.java工具類,以及後台的LoginAction主類,三個類串聯打通。
http://blog.csdn.net/yanzi1225627/article/details/24882569
trim 修剪,整理,整齊的,整潔的,苗條的
trim() 這是一個很常見的函數,他的所用是去掉字符序列左邊和右邊的空格,中間的空格他不管。
19、SparseArray<E> GrowingArrayUtils
http://blog.csdn.net/xyz_fly/article/details/7931943
http://blog.csdn.net/u013493809/article/details/21699121
http://blog.csdn.net/xueshanhaizi/article/details/51045750
20、數據存儲
五種方式:
第一種: 使用SharedPreferences存儲數據
適用於存儲信息量小的操作。本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。具有操作和存儲簡便,代碼簡單的特點。其存儲位置在/data/data/<包名>/shared_prefs目錄下。
SharedPreferences對象與SQLite數據庫相比,免去了創建數據庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其只能存儲boolean,int,float,long和String五種簡單的數據類型,無法進行條件查詢等。
第二種:文件存儲數據
文件可用來存放大量數據,如文本、圖片、音頻等。通過SD卡等磁盤介質存儲,這類一般都是存成文件的形式。適用於存儲信息量大,操作相對複雜些。默認位置:/data/data/<包>/files/***.***。通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。
使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對於像視頻這樣的大文件,我們可以把它存放在SDCard。
第三種: SQLite數據庫存儲數據
通過數據庫,一般都是sqlite的方式進行存儲,適用於存儲信息量適中,這類存儲在查詢的時候比較方便。而且能很好的支持SQL語句。SQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。數據庫存儲在 data/< 項目文件夾 >/databases/ 下。在 Android 應用程序中使用 SQLite,必須自己創建數據庫,然後創建表、索引,填充數據。
第四種:使用ContentProvider存儲數據
一個Content Provider類實現了一組標准的方法接口,從而能夠讓其他的應用保存或讀取此Content Provider的各種數據類型。ContentProviders是以類似數據庫中表的方式將數據暴露,也就是說ContentProvider就像一個“數據庫”。Content Provider是個實現了一組用於提供其他應用程序存取數據的標准方法的類。應用程序可以在Content Provider中執行如下操作: 查詢數據修改數據添加數據刪除數據。大多數Content Provider使用Android文件系統或SQLite數據庫來保持數據,但是你也可以以任何你想要的方式來存儲。在AndroidMenifest.xml中使用標簽來設置Content Provider。
第五種: 網絡存儲數據
前面介紹的幾種存儲都是將數據存儲在本地設備上,除此之外,還有一種存儲(獲取)數據的方式,通過網絡來實現數據的存儲和獲取。通過網絡方式存儲到其他服務器,這類一般適用於CS方式,且存儲數據需要集中存儲,具有聯網的性質。比如網遊或者複雜應用。
http://zhidao.baidu.com/link?url=Ink6EqUgQoZqy_nMngc-6UJuiSXY0oM-dwqciD59PdULzUGCYbOs9GKbYUigIy12G2hlSNxWt2v1JxhJ7XZvnVOn42cLFSwyUm_z9vOPVfm
http://blog.csdn.net/amazing7/article/details/51437435
http://www.codeceo.com/article/5-android-storage.html
http://www.cnblogs.com/ITtangtang/p/3920916.html
21、 Android 緩存機制
http://blog.csdn.net/amazing7/article/details/51353817
22、 (1)NavigationView導航側滑菜單
http://blog.csdn.net/lmj623565791/article/details/46405409
(2)ActionBar
http://www.tuicool.com/articles/ERvAfyn
http://www.cnblogs.com/yc-755909659/p/4290784.html
http://blog.csdn.net/bigconvience/article/details/28907833
(3)CoordinatorLayout
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0717/3196.html
(4)CoordinatorLayout+AppBarLayout實現上滑隱藏
http://blog.csdn.net/u010687392/article/details/46852565
(5)Toolbar
http://blog.csdn.net/jdsjlzx/article/details/41441083/
http://www.codeceo.com/article/android-toolbar-develop.html
(6)http://blog.csdn.net/feiduclear_up/article/details/46514791
http://www.open-open.com/lib/view/open1433385856119.html
23、MVC MVP
http://blog.csdn.net/feiduclear_up/article/details/46363207
MVC框架圖
MVP框架圖
M層是邏輯操作層,P從V(activity)拿到數據交給M處理。
http://blog.csdn.net/feiduclear_up/article/details/46374653
MPV 是從經典的MVC模式演變過來的,P和MVC中的C擔當的角色相似。從上面的框架圖可以看出MVC和MVP最大的區別就是 Model和View之間的關系。在MVC框架中,View是可以直接讀取Model模型中的數據的,Model模型數據發生改變是會通知View數據顯示發生相應的改變。而在MVP中Model和View之間的沒有任何聯系,是兩個完全獨立的模塊,當Model模型發生數據改變時,通過Presenter通知View視圖發生相應的UI改變。因此,個人覺得:MVP才是真正的視圖和模型完全分離,也就是Model模型進行業務數據處理和View視圖顯示沒有任何關聯。
24、Volley
穀歌自己推出來的Volley網絡請求框架就是遵循MVC框架的。我們可以理解為Volley框架是MVC當中的模型,也就是網絡數據處理這一塊,無需跟View視圖有任何關聯。也符合視圖和模型分離。現在代碼中的網絡請求是使用Volley框架來實現的。
http://blog.csdn.net/guolin_blog/article/details/17482095
http://blog.csdn.net/a910626/article/details/46664661
VolleyRequest.newInstance().newGsonRequest();
25、RecyclerView
使用RecylerView必須導入support-v7包,是一個強大的滑動組件,是ListView的升級版。
http://blog.csdn.net/dmk877/article/details/50816933
http://blog.csdn.net/lmj623565791/article/details/45059587
26、ListView
列表的顯示需要三個元素:
1.ListVeiw 用來展示列表的View。
2.適配器 用來把數據映射到ListView上的中介。
3.數據 具體的將被映射的字符串,圖片,或者基本組件。
根據列表的適配器類型,列表分為三種,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最為簡單,只能展示一行字。SimpleAdapter有最好的擴充性,可以自定義出各種效果。SimpleCursorAdapter可以認為是SimpleAdapter對數據庫的簡單結合,可以方面的把數據庫的內容以列表的形式展示出來。
http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
http://www.cnblogs.com/caoRM/p/3752804.html
27、Bundle
兩個activity之間的通訊可以通過bundle類來實現。
http://blog.csdn.net/randyjiawenjie/article/details/6651437
28、android:imeOptions="actionGo"
http://blog.csdn.net/wqjsir/article/details/22901651
http://www.cnblogs.com/mingfeng002/archive/2013/08/07/3243082.html
29、搜索框(SearchView)
http://my.oschina.net/summerpxy/blog/175061
http://www.2cto.com/kf/201502/376368.html
30、反射
反射機制: JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。 JAVA的反射是指,可以通過一個類名來探察這個類裏面的信息,比如說類的屬性名,屬性名的修飾符,方法名,方法返回值,方法修飾符等等。
getDeclaredFields()獲得某個類的所有申明的字段,即包括public、private和proteced,但是不包括父類的申明字段。
getFields()獲得某個類的所有的公共(public)的字段,包括父類。
http://blog.csdn.net/liujiahan629629/article/details/18013523
Java反射機制主要提供了以下功能:在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
31、Android中Cursor類的概念和用法
http://www.cnblogs.com/TerryBlog/archive/2010/07/05/1771459.html
http://www.iteye.com/topic/649874
在Android 查詢數據是通過Cursor 類來實現的。當我們使用 SQLiteDatabase.query()方法時,就會得到Cursor對象, Cursor所指向的就是每一條數據。
SimpleCursorAdapter,是用於將Cursor中的columns與XML文件中定義的TextView或者ImageView進行匹配的Adapter。是CursorAdapter的子類。Cursor是指從數據庫表中得到的數據集合。Cursor 是每行的集合。
SimpleCursorAdapter和SimpleAdapter最大的區別就是
(1)前者是用Cursor表示數據,後者用List<Map<String,Object>>表示數據;
(2)前者的查詢語句的主鍵必須要為"
_id";
32、android data/data/ 目錄下的文件
android data/data/ 目錄下的文件占用系統存儲空間,不占用運行內存,是系統數據文件夾。關於android data/data/ 目錄說明如下: android data/data/ 目錄是應用程序在運行的過程中如果需要向手機上保存的數據,一般是把數據保存在SDcard中的。大部分應用是直接在SDCard的根目錄下創建一個文件夾,然後把數據保存在該文件夾中。如果想清除數據方法如下: 1、卸載應用:當你的應用在被用戶卸載後,SDCard/Android/data/你的應用的包名/ 這個目錄下的所有文件都會被刪除,不會留下垃圾信息。內部存儲路徑為/data/data/
youPackageName/,所有內部存儲中保存的文件在用戶卸載應用的時候會被刪除。 2、打開設置->應用->應用詳情裏面的”清除數據“與”清除緩存“選項
要在android studio中打開data/data/ 目錄需要在連接模擬器或真機的情況下,
一、 files 1. Context.getFilesDir(),該方法返回/data/data/
youPackageName/files的File對象。 2. Context.openFileInput()與Context.openFileOutput(),只能讀取和寫入files下的文件,返回的是FileInputStream和FileOutputStream對象。 3. Context.fileList(),返回files下所有的文件名,返回的是String[]對象。 4. Context.deleteFile(String),刪除files下指定名稱的文件。
二、cache 1. Context.getCacheDir(),該方法返回/data/data/
youPackageName/cache的File對象。 三、custom dir
getDir(Stringname, int mode),返回/data/data/
youPackageName/下的指定名稱的文件夾File對象,如果該文件夾不存在則用指定名稱創建一個新的文件夾。
33、在Android系統中,如果需要使用數據庫的話,我們一般會使用SQLLite數據庫,同時將數據庫放在res
aw目錄下,這樣方便發布系統的時候,將數據庫一同發布。
在系統中對數據庫進行訪問的時候,我們則一般會將數據庫拷貝到我們data/data目前下的我們當前包的名稱的目錄下,這樣更方便我們進行操作。
34、PendingIntent
intent英文意思是意圖,pending表示即將發生或來臨的事情。
PendingIntent這個類用於處理即將發生的事情。比如在通知Notification中用於跳轉頁面,但不是馬上跳轉。
Intent 是及時啟動,intent 隨所在的activity 消失而消失。
PendingIntent 可以看作是對intent的一個包裝,通常通過getActivity,getBroadcast ,getService來得到pendingintent的實例,當前activity並不能馬上啟動它所包含的intent,而是在外部執行 pendingintent時,調用intent的。常和alermanger 和notificationmanager一起使用。
Intent一般是用作Activity、Sercvice、BroadcastReceiver之間傳遞數據,而Pendingintent,一般用在 Notification上,可以理解為延遲執行的intent。
http://blog.csdn.net/yuzhiboyi/article/details/8484771
-
35、MySQL常見知識點筆記
http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html
36、randomaccessfile
http://www.2cto.com/kf/201208/149816.html
http://blog.csdn.net/akon_vm/article/details/7429245
http://blog.csdn.net/czplplp_900725/article/details/37809579
37、反編譯
http://zhidao.baidu.com/link?url=JcTf7emA6OdgdfORtjugy4D6I5n9aSIr3Ue4mnVwuoc-4zVl9LbqcFvjMCQVfIuvEz1G_cQDQh1VhpIzYKy7Ixxn0OXp69sze4g5-fi5CGO
apktool + dex2jar + jd-gui
apktool 作用:資源文件獲取,可以提取出圖片文件和布局文件進行使用查看 。 dex2jar作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)。JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。
http://blog.csdn.net/vipzjyno1/article/details/21039349/
下載:http://download.csdn.net/download/maohui3028/9147907
38、近期學習安排 2016/8/10
1、博客逐篇看完+代碼搞懂http://blog.csdn.net/guolin_blog?viewmode=contents
2、《瘋狂Android講義》劃線的看完
3、《SQL必知必會》看完
4、《Android應用開發》看完一個完整案例
5、《Java編程思想》劃線的看完+“Java面試訓練”APP刷題
6、JavaScript+Swing+CSS+HTML5
7、Android工程師路線圖http://www.imooc.com/course/programdetail/pid/33
8、android框架http://www.jb51.net/article/51052.htm
9、找工作的要求
-
一、《Android應用開發》
音樂盒:
1、JFrame
java的GUI程序的基本思路是以JFrame為基礎,它是屏幕上window的對象,能夠最大化、最小化、關閉。Swing 的三個基本構造塊:標簽、按鈕和文本字段;但是需要個地方安放它們,並希望用戶知道如何處理它們。JFrame 類就是解決這個問題的——它是一個容器,允許程序員把其他組件添加到它裏面,把它們組織起來,並把它們呈現給用戶。
2、JPanel
JPanel 是 Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,是一種輕量級容器,可以加入到JFrame窗體中。JPanel默認的布局管理器是FlowLayout,其自身可以嵌套組合,在不同子容器中可包含其他組件(component),如JButton、JTextArea、JTextField 等,功能是對窗體中具有相同邏輯功能的組件進行組合。
3、JFame是JPanel的容器。可以添加JPanel到JFame中,然後通過JFamede setBounds(x,y,width,high)方法設置JPanel面板的位置和大小。而JFame自己可以通過setTitle()方法設置標題。4、ActionListener
ActionListener是swing中的知識,通常是在進行某一個操作的時候觸發某項功能。是Java中關於事件處理的一個接口,繼承自EventListener。ActionListener用於接收操作事件的偵聽器接口。對處理操作事件感興趣的類可以實現此接口,而使用該類創建的對象可使用組件的 addActionListener 方法向該組件注冊。在發生操作事件時,調用該對象的 actionPerformed 方法。
5、JLabel
JLabel 對象可以顯示文本、圖像或同時顯示二者。可以通過設置垂直和水平對齊方式,指定標簽顯示區中標簽內容在何處對齊。默認情況下,標簽在其顯示區內垂直居中對齊。默認情況下,只顯示文本的標簽是開始邊對齊;而只顯示圖像的標簽則水平居中對齊。 還可以指定文本相對於圖像的位置。默認情況下,文本位於圖像的結尾邊上,文本和圖像都垂直對齊。
http://outofmemory.cn/code-snippet/1121/swing-JLabel-explain-in-detail-yiji-usage-shili
6、JOptionPane
JOptionPane.showMessageDialog(null,”消息”);
相當於Toast,用於提示消息
7、DefaultMutableTreeNode
8、CardLayout 卡片布局
static CardLayout cl=
new CardLayout();
static JPanel jall=new JPanel();
JScrollPane jspy=new JScrollPane(jall);
jall.setLayout(cl); //設置成卡片布局//向該JPanel布局中分別添加 空的,音樂,歌手,專輯jall.add(jempty,"jempty");jall.add(jmusicmanage,"jmusicmanage"); ……
9、JComboBox
JComboBox類是一個組件,它結合了一個按鈕或可編輯字段與下拉列表。JList和ComboBox很相似,因為這兩個組件都顯示一個項列表。因此,它們都有擴展ListModel接口的模型。而且,這兩個組件都有繪制器,這些繪制器通過實現ListCellBenderer接口來繪制列表單元。
10、TableColumn
TableColumn 表示 JTable 中列的所有屬性,如寬度、大小可調整性、最小和最大寬度。此外,TableColumn 還為顯示和編輯此列中值的渲染器和編輯器提供了位置。還可以基於每種類型,而不是每列來指定渲染器和編輯器,請參閱 JTable 類中的 setDefaultRenderer 方法。此默認機制僅用於 TableColumn 中的渲染器(或編輯器)為 null 的情況。
TableColumn 存儲 JTable 中各列與 TableModel 中各列之間的鏈接。modelIndex 是 TableModel 中的列,要獲得此列中單元格的數據值,可對 modelIndex 進行查詢。在視圖中移動列時,此 modelIndex 不更改。
注:某些實現可能假定所有 TableColumnModel 都是唯一的,因此我們建議不要多次將同一TableColumn 實例添加到 TableColumnModel 中。要從模型中顯示具有相同數據列的TableColumn,可創建具有相同 modelIndex 的新實例。
TableColumn .setPreferredWidth設置每列的寬度。
11、JFileChooser(Java Swing提供的文件選擇對話框)
JFileChooser 這個是文件選擇器
JFileChooser()
構造一個指向用戶默認目錄的
JFileChooser
。
JFileChooser(File currentDirectory) 使用給定的
File
作為路徑來構造一個
JFileChooser
。
http://blog.csdn.net/liang5630/article/details/25651491
12、FileNameExtensionFilter
FileNameExtensionFilter 這個是文件過濾器,過濾設置的格式。
FileFilter 的一個實現,它使用指定的擴展名集合進行過濾。文件的擴展名是指文件名最後一個“.”後面的部分。名稱不包含“.”的文件沒有文件擴展名。文件擴展名的比較不區分大小寫。
13、JTextField
14、BorderLayout 邊界布局
http://blog.csdn.net/liujun13579/article/details/7772215
BorderLayout.CENTER
15、intent.getintextra("參數",值)
Activity之間傳參的,啟動的那個,Intent.putExtra,然後再startIntent。 被啟動的那個getIntent().getXXXXExtra(),如果這裏的名稱和數據類型都互相符合,第二個Activity就能取到值了。
:第一個是傳的參數的名字,主要靠這個名字區別各個參數。第二個是默認值,如果沒取到值,就按默認值來。
16、android mediaplayer中seekTo()方法用法
在使用音頻時,需要用到MediaPlayer。seekto方法是異步方法,設置播放進度,參數是毫秒。
17、SharedPreferences sp = ms.get SharedPreferences(“第一個參數”,第二個參數);
第一個參數是存儲時的名稱,指定保存文件時的文件名稱。第二個參數則是文件的打開方式。數據會保存到 /data/data/ [packagename]/shared_prefs目錄下。相當於Web中的一個小小的Cookie。 調用Context對象的getSharedPreferences()方法獲得的SharedPreferences對象可以被同一應用程序下的其他組件共享。
在程序中保存一些配置參數的時候我們經常使用SharedPreferences。很多時候我們開發的軟件需要向用戶提供軟件參數設置功能,例如我們常用的QQ,用戶可以設置是否允許陌生人添加自己為好友。對於軟件配置參數的保存,如果是window軟件通常我們會采用ini文件進行保存,如果是j2se應用,我們會采用properties屬性文件或者xml進行保存。如果是Android應用,我們最適合采用Android平台給我們提供的SharedPreferences類來保存軟件配置參數。它是一個輕量級的存儲類,特別適合用於保存軟件配置參數。使用SharedPreferences保存數據,其背後是用xml文件存放數據,文件存放在/data/data/<packagename>/shared_prefs目錄下。
18、可以通過Environment.getExternalStorageDirectory()獲取當前SDCard位置。
通過Environment.getExternalStorageState()方法獲取SDCard當前狀態。
如果要打開存放在/data/data/<packagename>/files目錄應用私有的文件,可以使用Activity提供openFileInput()方法。
19、Pattern和Matcher是正則表達式中的兩個類
java.util.regex是一個用正則表達式所訂制的模式來對字符串進行匹配工作的類庫包。Regex(正則表達式)。它包括兩個類:Pattern和Matcher。
Pattern: 一個Pattern是一個正則表達式經編譯後的表現模式。
Matcher: 一個Matcher對象是一個狀態機器,它依據Pattern對象做為匹配模式對字符串展開匹配檢查。
首先一個Pattern實例訂制了一個所用語法與PERL的類似的正則表達式經編譯後的模式,然後一個Matcher實例在這個給定的Pattern實例的模式控制下進行字符串的匹配工作。
例如: String patternStr = "(.)*([0-9]{2}):([0-9]{2}).([0-9]{2})(.)*"; Pattern p = Pattern.compile(patternStr);//將正則表達式patternStr編譯並賦予給Pattern類
Matcher m =p.matcher(strTemp);
if (m.matches()) {}
http://www.cnblogs.com/playing/archive/2011/03/15/1984943.html
20、音樂播放器
kugoumusic.ACTION_CONTROL
kugoumusic.WIDGET_STATUS
21、objectAnimator
Android 屬性動畫 ObjectAnimator 類是ValueAnimator的子類,他本身就已經包含了時間引擎和值計算,所以它擁有為對象的某個屬性設置動畫的功能。
http://www.it165.net/pro/html/201505/41670.html
http://www.netfoucs.com/article/x359981514/92198.html
22、拖動條SeekBar
拖動條(SeekBar)組件與ProgressBar水平形式的顯示進度條類似,不過其最大的區別在於,拖動條可以由用戶自己進行手工的調節,例如當用戶需要調整播放器音量或者電影的播放速度都會使用到拖動條SeekBar類。
http://blog.chinaunix.net/uid-25153965-id-161106.html
23、AndroidActivity和Fragment的轉場動畫
http://www.cnblogs.com/mengdd/p/3494041.html
-
二、克勝掃碼器開發
1、Github上二維碼掃描器代碼
https://github.com/search?p=1&q=%E4%BA%8C%E7%BB%B4%E7%A0%81%E6%89%AB%E6%8F%8F%E5%99%A8&ref=searchresults&type=Repositories&utf8=%E2%9C%93
2、<intent-filter android:priority="1000" />
BroadcastReceiver裏的相關內容。
1. 優先級的概念用於描述控件的 intent的filter的類型。 這個屬性只對activity 和 receivers 是有意義的。
2. 隱式調用activity的情況下: 如果多個activity 滿足響應 的條件, 系統只會觸發 priority 高的那個activity。
3. 有序廣播發出的情況下:如果多個receiver滿足響應的條件,系統會優先觸發prioriyt搞的那個receiver。
4. priority 必須是整數,默認是0 範圍是[-1000, 1000]
http://blog.csdn.net/liuhe688/article/details/6955668
3、ViewConfiguration這個類主要定義了UI中所使用到的標准常量,像超時、尺寸、距離等
4、native JNI
在java中native是關鍵字。它一般在本地聲明,異地用C和C++來實現。它的聲明有幾點要注意:1)native與訪問控制符前後的關系不受限制。2)必須在返回類型之前。3)它一般為非抽象類方法。4)native方法在異地實現,象抽象方法一樣,所以沒有方法體,以分號結束。
JNI是Java Native Interface的縮寫,中文為JAVA本地調用。它允許Java代碼和其他語言寫的代碼進行交互。
http://blog.csdn.net/a491057947/article/details/31448411
5、
Android中的5種數據存儲方式(1)使用SharedPreferences存儲數據;
采用了Map數據結構來存儲數據,以鍵值的方式存儲。
(2)文件存儲數據;
文件存儲方式是一種較常用的方法,在Android中讀取/寫入文件的方法,與Java中實現I/O的程序是完全一樣的,提供了openFileInput()和openFileOutput()方法來讀取設備上的文件。
(3)SQLite數據庫存儲數據;
(4) 使用ContentProvider存儲數據;
當應用繼承ContentProvider類,並重寫該類用於提供數據和存儲數據的方法,就可以向其他應用共享其數據。
(5) 網絡存儲數據;
Preference,File, DataBase這三種方式分別對應的目錄是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。
http://www.cnblogs.com/cmduan/archive/2012/03/06/2382006.html
6、基於Android開發多媒體和遊戲應用時,可能會挺經常出現Out Of Memory 異常 ,顧名思義這個異常是說你的內存不夠用或者耗盡了。
在Android中,一個Process 只能使用16M內存,如果超過了這個限制就會跳出這個異常。這樣就要求我們要時刻想著釋放資源。Java的回收工作是交給GC的。
在Android中:
1.一個進程的內存可以由2個部分組成:java 使用內存,C 使用內存 ,這兩個內存的和必須小於16M,不然就會出現大家熟悉的OOM,這個就是第一種OOM的情況。
2.更加奇怪的是這個:一旦內存分配給Java後,以後這塊內存即使釋放後,也只能給Java的使用,這個估計跟java虛擬機裏把內存分成好幾塊進行緩存的原因有關,反正C就別想用到這塊的內存了,所以如果Java突然占用了一個大塊內存,即使很快釋放了:
C能使用的內存 = 16M - Java某一瞬間占用的最大內存。
而Bitmap的生成是通過malloc進行內存分配的,占用的是C的內存。16M是怎麼來的?算是實驗來的吧,每個機型不一樣,模擬器不同版本也不一樣,可以通過: Runtime.getMaxMemory() 來查看。
http://www.cnblogs.com/wanqieddy/archive/2012/07/18/2597471.html
7、開源框架(1)Volley
http://blog.csdn.net/guolin_blog/article/details/17482095
StringRequest和JsonRequest的用法:
1、 導入volley.jar
2、 創建一個RequestQueue對象。
3、 創建一個Request對象。
4、 將Request對象添加到RequestQueue裏面。
(2)xUtils
1、DbUtils模塊 2、ViewUtils模塊 3、HttpUtils模塊 4、BitmapUtils模塊
http://www.jcodecraeer.com/a/opensource/2014/1113/1971.html
(3)ThinkAndroid
1、MVC模塊 2、ioc模塊 3、數據庫模塊 4、http模塊 5、緩存模塊 6、圖片緩存模塊
7、配置器模塊 8、日志打印模塊 9、下載器模塊 10、網絡狀態檢測模塊
https://github.com/white-cat/ThinkAndroid
14、常見框架網絡框架:okhttp、volley、android-async-http 圖片框架:Picasso、Fresco、Glide、Android-Universal-Image-Loader 緩存框架:DiskLruCache、 Robospice Json解析:Gson、Jackson、Fastjson 事件總線:EventBus、Otto ORM框架:GreenDAO
開源代碼http://www.jcodecraeer.com/plus/list.php?tid=31 http://www.itlanbao.com/codes.aspx#1,0
SooPAT專利搜索http://www2.soopat.com/#userconsent#
8、 Android APK
反編譯一、 apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件二、
apk反編譯得到Java源代碼三、 圖形化反編譯apkclasses.dex文件是java文件編譯再通過dx工具打包而成的。
被混淆過的類文件名稱以及裏面的方法名稱被反編譯之後都會以a,b,c.之類的樣式命名顯示。
http://blog.csdn.net/vipzjyno1/article/details/21039349/
9、文件保存
Android中文件相關的操作:
openFileOutput(filename, mode) 打開文件輸出流,就是往文件中寫入數據,第二參數是模式,就是操作權限
openFileIntut(filename) 打開文件輸入流,將文件中的信息讀取到程序中
getDir(name, mode) 在app的data目錄下獲取或創建name對應的子目錄
getFileDir() 獲得app的data目錄的file目錄的絕對路徑
String[] fileList() 返回app的data目錄下的全部文件
deleteFile(filename) 刪除app的data目錄下指定的文件
文件的操作權限:
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件
Context.MODE_PRIVATE:可寫為0,私有方法,只有創建這個文件的程序才能訪問,寫入的數據會覆蓋原文件的內容
Context.MODE_WORLD_READABLE:可寫為2當前文件可被其他文件讀取
Context.MODE_WORLD_WRITEABLE:可寫為1,當前文件可被其他文件讀取和寫稿
openFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符"/" ,如果文件不存在,Android 會自動創建它。創建的文件保存在/data/data/<package name>/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,通過點擊Eclipse菜單"Window"-"Show View"-"Other",在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。
http://test-touch.iteye.com/blog/1573489
http://www.verydemo.com/demo_c131_i4081.html
http://blog.csdn.net/wu_wxc/article/details/49448977
http://www.jb51.net/article/79218.htm
10、Word很多頁怎麼快速直接跳轉到自己想看的那一頁
Ctr+G調出定位對話框,輸入頁數,回車確定即可跳轉到相應頁數。11、ListView
http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
http://my.csdn.net/sinyu890807
12、serialportserial port,即串行端口,現在大多數硬件設備均采用串口技術與計算機相連,因此串口的應用程序開發越來越普遍。例如,在計算機沒有安裝網卡的情況下,將本機上的一些信息數據 傳輸到另一台計算機上,那麼利用串口通信就可以實現。
13、android:autoLink 顯示URL鏈接
TextView識別鏈接的方式有兩種,一種是自動識別鏈接和HTML解析鏈接
1)自動識別鏈接
<! android:autoLink="web"-設置自動識別鏈接,值web為匹配Web網址 >
<!android:autoLink="phone"-設置自動識別鏈接,值phone為匹配電話號碼 >
<! android:autoLink="email"-設置自動識別鏈接,值email為匹配Email地址 >
<! android:autoLink="all"-設置自動識別鏈接,值all為匹配所有 >
http://blog.csdn.net/flysongpeng/article/details/7527152
15、TextUtils.isEmpty(CharSequence str)這個方法是系統為我們提供的一個非常方便的判斷一個CharSequence類型的參數是否為空的方法,這個方法的返回值是一個boolean,當括號內參數為(null)或者("")時,返回true。
TextUtils.equals(CharSequence str1, CharSequence str2)這個是比較括號內兩個CharSequence類型的參數是否相等。
16、Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:jdkjrejdk1.8injava.exe'' finished with non-zero exit value 2
出現這種錯誤是因為導入的jar包有重複,找到重複的包刪除。
17、在AndroidManifest.xml文件中加入android:screenOrientation屬性限制,限制橫豎屏切換。
android:screenOrientation="landscape"是限制此頁面橫屏顯示,android:screenOrientation="portrait"是限制此頁面數豎屏顯示。
http://blog.csdn.net/nmgchfzhzhg/article/details/8077133
18、android中重啟adb
http://jingyan.baidu.com/article/c275f6bac24c2ce33d7567be.html
19、Activity的onPause()和onResume()
activity本身的生命周期,可見但失去焦點。在tabhost的頁面切換時調用可以達到注銷activity資源的目的。
20、藝術字生成在線,可用於美化界面 http://www.qt86.com/
21、剛進入activity的時候,如果布局組件有edittext的話,往往edittext會獲取焦點,自動彈出軟鍵盤,影響整個界面的視覺效果。解決方法如下:
可以在edittext的父布局結構中(例如LinearLayout,RelativeLayout等)添加
android:focusable="true"
android:focusableInTouchMode="true"
這個兩個屬性,就可以了。
22、一般情況下Intent是供兩個Activity之間跳轉和傳參的,而Fragment和Activity之間的通信則要借助下面鏈接中的方法。
http://blog.csdn.net/yayun0516/article/details/48210953
注意:ViewPager中的Activity與其他的Activity通信,可以借助廣播實現。參見
http://blog.csdn.net/jason0539/article/details/18075293
23、常用網址:
SooPAT專利http://www2.soopat.com/#userconsent#
牛客網http://www.nowcoder.com/1582242
慕課網http://www.imooc.com/course/list?c=android
開源代碼http://www.jcodecraeer.com/plus/list.php?tid=31
外文數據庫http://lib.njupt.edu.cn/s/36/t/472/p/1/c/3325/d/3456/list.htm
快搜http://so.chongbuluo.com/
24、android:ems=“10”
android:ems = "10" 設置TextView或者Edittext的寬度為10個字符的寬度。當設置該屬性後,控件顯示的長度就為10個字符的長度,超出的部分將不顯示。
25、GridLayout(網格布局)
getChildCount() 獲取GridLayout中的元素個數
GridLayout.spec(0, 5);//相當於android:layout_columnSpan="5" spec(start,size)參數為起始位置,占幾列
http://blog.csdn.net/buaaroid/article/details/27064059
26、ViewGroup
http://blog.csdn.net/u014163726/article/details/46852763
27、Thisfile is indented with tabs instead of 4 spaces
http://zhidao.baidu.com/link?url=vnAIcQM9dORuwlyBo0r4sUPdKkK_EzlZKgprEoAQAW0YEmQ5leQbYRLEYLOLYlzsbgiqvQHkIXJXDDHKJKyE_qkm6jzQZJ0tvJt3jYfA6gK
CTRL + ALT + L(Win/ Linux), and OPTION + CMD + L (Mac)
http://stackoverflow.com/questions/23632624/android-studio-tab-spacing
28、android:inputType="number"數字格式
android:inputType="numberSigned"有符號數字格式
android:inputType="numberDecimal"可以帶小數點的浮點格式
29、android:inputType常用取值
http://blog.csdn.net/gzh0222/article/details/7248035
http://blog.csdn.net/xqf222/article/details/9789143
30、Java中字符流和字節流到底有什麼區別
stream結尾都是字節流,reader和writer結尾都是字符流。兩者的區別就是讀寫的時候一個是按字節讀寫,一個是按字符。字符比字節要大,字符流的底層就是字節流。而字符流主要是讀取文本文件內容的,可以一個字符一個字符的讀取,也可以一行一行的讀取文本文件內容。而字節流讀取單位為byte.byte作為計算機存儲最基本單位,可以用字節流來讀取很多其他格式的文件,比如圖片視頻等等。基於B/S和C/S的文件傳輸都可以采用字節流的形式。
java中提供了專用於輸入輸出功能的包Java.io,其中包括: InputStream,OutputStream,Reader,Writer。 InputStream 和OutputStream,兩個是為字節流設計的,主要用來處理字節或二進制對象, Reader和 Writer.兩個是為字符流(一個字符占兩個字節)設計的,主要用來處理字符或字符串.
注:程序中的輸入輸出都是以流的形式保存的,流中保存的實際上全都是字節文件。除了字符和字節流之外,java還有一種叫對象流。可以去查API學習一下。
不同的字符所占的字節是不同的。ASCII碼: 一個英文字母(不分大小寫)占一個字節的空間,一個中文漢字占兩個字節的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值0,最大值255。如一個ASCII碼就是一個字節。 UTF-8編碼: 一個英文字符等於一個字節,一個中文(含繁體)等於三個字節。 Unicode編碼: 一個英文等於兩個字節,一個中文(含繁體)等於兩個字節。 符號: 英文標點占一個字節,中文標點占兩個字節。舉例:英文句號“.”占1個字節的大小,中文句號“。”占2個字節的大小。
http://blog.csdn.net/zxman660/article/details/7875799
31、
APN網絡切換APN(Access Point Name),即“接入點名稱”,用來標識GPRS的業務種類,目前分為兩大類:CMWAP(通過GPRS訪問WAP業務)、CMNET(除了WAP以外的服務目前都用CMNET,比如連接因特網等)。
APN的英文全稱是AccessPoint Name,中文全稱叫接入點,是您在通過手機上網時必須配置的一個參數,它決定了您的手機通過哪種接入方式來訪問網絡。
http://www.cnblogs.com/hanyonglu/archive/2012/03/29/2423298.html
32、Android漏洞挖掘工具收集與整理
http://blog.csdn.net/phoebe_2012/article/details/44805423
ASEF https://code.google.com/archive/p/asef/downloads
33、手機服務器微架構設計與實現
http://www.imooc.com/learn/676
34、初識Java微信公眾號開發
http://www.cnblogs.com/txw1958/p/weixin-book-dev.html
http://www.imooc.com/learn/368
35、百度的api store收集的可以直接用的開放api,地址:http://apistore.baidu.com/
如:手機號和天氣查詢等等接口api都可以找到。但這些接口都只是一些簡單的查詢,像百度地圖等功能接口沒有提供,需要另外解決。
聚合數據提供的api接口:https://www.juhe.cn/docs
DevStore(全球首家開發者服務商店) http://www.devstore.cn/service/newproductList/cla4-cid0.html
36、外網映射工具
通過映射工具將本機地址映射到公網上,這樣才能在公網上訪問本地服務。工具有ngrok、花生殼等等。E:weixin
grok
37、API Demos
http://blog.csdn.net/zph2254/article/details/6847978和API Demos 的apk文件
38、Android基礎動畫
采用屬性動畫更好。
39、Android studio把一段代碼快速提取,放在自己定義方法裏面的快捷鍵
Windows是 Ctrl + Alt + M(如果你之前有把快捷鍵匹配成了eclipse的那麼使用Alt+shift+M)。
Ctrl+斜杠:注釋或取消注釋當前行或選中的代碼塊,以雙斜杠的方式即“//” Ctrl+shift+斜杠:注釋或取消注釋選中的代碼塊,以“/*……*/”方式注釋。
http://www.cr173.com/html/24051_1.html
40、Android面經
http://www.imooc.com/article/11965
http://www.imooc.com/article/12225
http://www.imooc.com/article/tag/12/hot/5
http://www.nowcoder.com/discuss/5949?type=0&order=4&pos=88&page=7
http://blog.csdn.net/huxiaoyonglan1/article/list/5
41、GitHub 優秀的 Android 開源項目
http://blog.csdn.net/shulianghan/article/details/18046021
42、SVM Android
https://github.com/search?utf8=%E2%9C%93&q=SVM+Android
43、NDK
1、慕課網 環境變量沒配置成功,後來在http://www.android100.org/html/201509/18/182761.html
的AS中下載NDK到Android SDK目錄下,修改path,環境變量配好了。接著看慕課網。
2、看了這些網址也沒成功
https://www.shaneenishry.com/blog/2014/08/17/ndk-with-android-studio/
http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html
3、https://segmentfault.com/a/1190000003999352
http://www.tuicool.com/articles/NBjQny
44、ListView是一個經常要用到的android控件,現總結遇到過的一些美化的小細節。
1、listview在拖動的時候背景圖片消失變成黑色背景,等到拖動完畢我們自己的背景圖片才顯示出來
解決:在XML中加入android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″
2、listview的上邊和下邊有黑色的陰影
解決: android:fadingEdge=”none”
3、修改listview的Item默認選擇時的黃色背景
解決:在
Java文件中使用listview.setSelector()方法,或使用如下代碼
android:listSelector="#00000000"//這樣寫是透明的,也可加入Drawable圖片
4、lsitview的每一項之間需要設置一個圖片做為間隔
解決: android:divider=”@drawable/list_driver”
45、android:numColumns是Android中GridView控件設置顯示列數的屬性,他的參數可以是整形數據,例如設置android:numColumns="3"表示這個GridView顯示的樣式為3列表。設置成auto_fit表示自動調整顯示列數。
46、Android中的常見顏色
http://www.cnblogs.com/bluestorm/p/3644669.html
47、getReadableDatabase()並不是以只讀方式打開數據庫,而是先執行getWritableDatabase(),失敗的情況下才以只讀方式打開數據庫.。
getWritableDatabase()方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫,
getWritableDatabase()打開數據庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數據庫, 倘若使用如果數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫.
48、關於java UTF-8中文與Unicode編碼之間轉換,以及將瀏覽器地址欄編碼過的中文轉換UTF-8形式
http://blog.csdn.net/lyankj/article/details/51801774
49、Android百度地圖開發
http://blog.csdn.net/crazy1235/article/details/42614603
http://www.th7.cn/Program/Android/201507/509472.shtml
50、shape + Selector
shape用於設定形狀,可以在selector,layout等裏面使用,有6個子標簽。
http://www.cnblogs.com/cyanfei/archive/2012/07/27/2612023.html
http://liangruijun.blog.51cto.com/3061169/732310/
注意在selector中default默認顯示的那個drawable要放在最下面,不然不會出現變化效果。
http://www.tuicool.com/articles/VVBJjq2
51、
Java把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用。具有軟引用的對象只有當內存不夠的時候才被回收,在內存足夠的時候,通常不被回收。
只具有弱引用的對象擁有更短暫的生命周期,可能隨時被回收。
如果只是想避免OutOfMemory異常的發生,則可以使用軟引用。如果對於應用的性能更在意,想盡快回收一些占用內存比較大的對象,則可以使用弱引用。
SoftReference類、WeakReference類和PhantomReference類,分別代表軟引用、弱引用和虛引用。
http://blog.csdn.net/arui319/article/details/8489451
52、Android開發優化之——對Bitmap的內存優化
1、因為Bitmap是吃內存大戶,通常在實例化Bitmap的代碼中,一定要對OutOfMemory異常進行捕獲。
2、生成Bitmap對象最終都是通過JNI調用方式實現的。所以,加載Bitmap到內存裏以後,是包含兩部分內存區域的。簡單的說,一部分是Java部分的,一部分是C部分的。這個Bitmap對象是由Java部分分配的,不用的時候系統就會自動回收了,但是那個對應的C可用的內存區域,虛擬機是不能直接回收的,這個只能調用底層的功能釋放。所以需要調用recycle()方法來釋放C部分的內存。
// 先判斷是否已經回收
if(bitmap!= null && !bitmap.isRecycled()){
// 回收並且置為null
bitmap.recycle();
bitmap = null;
}
System.gc();
需要注意的是,調用System.gc()並不能保證立即開始進行回收過程,而只是為了加快回收的到來。
3、使用BitmapFactory.Options設置inSampleSize就可以縮小圖片。屬性值inSampleSize表示縮略圖大小為原始圖片大小的幾分之一。即如果這個值為2,則取出的縮略圖的寬和高都是原始圖片的1/2,圖片的大小就為原始大小的1/4。
http://blog.csdn.net/arui319/article/details/7953690
53、Binder 機制
Binder是Android中的一個類,它繼承了IBinder接口。Binder是Android系統進程間通信(IPC)方式之一,是Android中的一種跨進程通信方式。Binder通信實際上是位於不同進程中的線程之間的通信。Binder框架定義了四個角色:Server,Client,ServiceManager以及Binder驅動。其中Server,Client,SMgr運行於用戶空間,驅動運行於內核空間。
對Binder而言,Binder可以看成Server提供的實現某個特定服務的訪問接入點, Client通過這個‘地址’向Server發送請求來使用該服務;對Client而言,Binder可以看成是通向Server的管道入口,要想和某個Server通信首先必須建立這個管道並獲得管道入口。
Binder使用Client-Server通信方式,安全性好,簡單高效,再加上其面向對象的設計思想,獨特的接收緩存管理和線程池管理方式,成為Android進程間通信的中流砥柱。
https://my.oschina.net/Bruce370/blog/536946
http://blog.csdn.net/boyupeng/article/details/47011383
54、時間
System.currentTimeMillis()產生一個當前的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數,Date()其實就是相當於Date(System.currentTimeMillis());因為Date類還有構造Date(long date),用來計算long秒與1970年1月1日之間的毫秒差。
new Date.getTime()所返回的是一個long型的毫秒數 ,如果要獲取特定格式的時間需要格式化。如下所示:
SimpleDateFormat sdf = newSimpleDateFormat("yyyy-MM-dd"); sdf.format(new Date()); 得到的日期格式為:2008-05-14
http://lixh1986.iteye.com/blog/1757619
55、如果是抽象類要實現接口,可以實現部分或者一個都不實現,要是具體類就必須實現接口中的所有方法。
56、android.support.v4.widget.SwipeRefreshLayout
下拉刷新組件
setOnRefreshListener 用於監聽刷新的動作。SwipeRefreshLayout 下拉,就會有刷新的效果出來,觸發該監聽。
http://www.cnblogs.com/JinyaoLi/p/3852424.html
http://blog.csdn.net/it_transformers/article/details/42143015
RecyclerView
RecyclerView提供了以下5種角色:
RecyclerView.Adapter
RecyclerView.ViewHolder Recyclerview緩存的是viewholder。
RecyclerView.LayoutManager 布局器,負責Item視圖的布局
RecyclerView.ItemDecoration 每個item附加的子視圖,可用來繪制Divider,設置padding等
RecyclerView.ItemAnimator 負責添加、刪除數據時的動畫效果
通過Recycler.Adapter的getItemCount()方法可以輕松獲取到RecyclerView列表中Item View的個數。
CardView被包裝為一種布局,並且經常在ListView和RecyclerView的Item布局中,作為一種容器使用。
LayoutManger給我們提供了幾個方法可以讓開發者方便地獲取到屏幕上面的頂部item和頂部item相關的信息:
findFirstVisibleItemPosition() findFirstCompletlyVisibleItemPosition()
findLastVisibleItemPosition() findLastCompletlyVisibleItemPosition()
http://blog.csdn.net/javacainiao931121/article/details/51720807
http://www.cnblogs.com/krislight1105/p/5251893.html
57、Android:scaleType是控制圖片如何resized/moved來匹對ImageView的size。
http://blog.csdn.net/encienqi/article/details/7913262
58、SnackBar
新增的一個控件,是Toast的威力加強版。使用Snackbar我們可以在屏幕底部(大多時候)快速彈出消息。它是顯示在所有屏幕其它元素之上(屏幕最頂層),並不是像Toast一樣覆蓋在屏幕上。同一時間只能顯示一個snackbar。
http://www.tuicool.com/articles/BfEbMvB
59、OkHttpUtils框架
1、OkHttp網絡連接封裝工具類
OkHttpUtils.ResultCallback<String> loadNewsCallback = new OkHttpUtils.ResultCallback<String>() {
@Override
onSuccess(String response) {}
@Override
onFailure(Exception e) {}
}
OkHttpUtils.get(url, loadNewsCallback);//get方式獲取響應回調
http://blog.csdn.net/lmj623565791/article/details/49734867
2、將獲取到的json轉換為圖片列表對象,其中圖片對象類ImageBea