Android Coding利器之掌握小技巧,助你Coding更上一層樓~

本文講的是Android Coding利器之掌握小技巧,助你Coding更上一層樓~,話說前幾天在網上瀏覽到一大牛寫的關于Android布局優化的文章,看后感觸很深,回過頭看看自己寫過的代碼,發現還是有不少需要改進,今天找不到那天看的文章了,只能自己總結一些,以后有機會再次補充吧~ 。

本文目標

通過舉例說明Android開發中的小技巧,讓你我更6的玩轉Android~

掌握小技巧,助你Coding更上一層樓~

本文將通過以下幾點進行舉例說明:

  • Android Studio 常用快捷鍵;
  • Android Studio 強大的代碼補全;
  • Android Studio 插件;
  • Android 布局優化

Android Studio 常用快捷鍵

只從接觸Android Studio之后,愈發離不開這個開發神器了~也是,越接觸,越能感覺Studio的魅力,今天為大家帶來LZ開發中常用的一些快捷鍵。

1. Shift+F6 全局修改

LZ一般使用這種方式去改全局變量,或者資源名稱。

2. Alt+F7 查看全局引用

LZ一般優化時會使用這個去查看某個方法或者變量全局引用

3. Ctrl+Shift+上下鍵 移動代碼

4. 強大的 Alt+Insert

Alt+Insert,這個快捷鍵異常強大,里面包含生成get,set,toString ... 等一系列,愛不釋手~

5. Ctrl+F 局部查找

用這個找個方法啥的很6,但是僅限于局部,也就是本類

6. Ctrl+Alt+V 自動初始化變量 引入變量類型

只適用于基本類型

7. Ctrl+D 向下復制

還在Ctrl+C,Ctrl+V嘛?Out了,騷年~

8. Ctrl+Alt+L 格式化代碼

這個不得不說,都成為一種習慣,寫好一部分總是習慣格式化下代碼

9. Ctrl+Alt+O 去除無效引用(包名)

去除無用引用包以及格式化代碼都成為LZ標配了~GGG

10. Ctrl+J 強大的代碼補全

不得不說,這個真的666啊~

11. Ctrl+Alt+T 快速生成類似try塊 if塊 while等

這個LZ一般還是用于生成try塊方便,在項目中針對某些會出現異常的代碼塊都需要添加try

塊,防止異常導致崩潰

12. 貫穿全局的Alt+Enter

此子可用于導包,或者修正某些異常,類似于某些方法需要拋出異常或者添加try塊等

13. Ctrl+N 查找類

不想用鼠標,還想找個類腫么辦?Ctrl+N來幫你~

14. Ctrl+E 查看瀏覽歷史

15 .Alt+Shift+C 對比本地歷史紀錄

這個技能不錯,666

16. Ctrl+Shift+Space 自動補全代碼

17. Ctrl+Y 刪除當前行

18. F2 或Shift+F2 高亮錯誤或警告快速定位

19. Alt+J 多行編輯

想要一次性寫多行么?想一次性修改多行么?完全不是夢~

關于常用快捷鍵介紹到此,以后用到再補充~

Android Studio 強大的代碼補全

在上面已經為大家列舉LZ個人開發中常用的一些快捷鍵,下面簡單說明下強大的代碼補全功能~繼續感受Android Studio的魅力~

騷年,還在手動寫public static final嗎?

作為項目中常用也幾乎為必備的東西,強大的Studio早已看穿一切~當然LZ這里沒有全面,大家可以自行挖掘~或者直接使用快捷鍵~

Android Studio 插件

強大的Android Studio背后肯定會有n多插件使其更加優秀,下面將列舉LZ常用的幾種,具體大家可自行發掘~

1. GsonFormat json快速生成實體類

還在為Json編寫實體類犯愁嗎?趕快來使用它~

2. ButterKnife Zelezny 一鍵生成注解 簡化代碼

使用這個需要添加相應的依賴,為了省事兒,LZ直接盜圖了~勿怪

3. Parcelable 序列化

Android中的序列化有兩種方式,分別是實現Serializable接口和Parcelable接口,但在Android中是推薦使用Parcelable,而且這邊過程比較繁瑣,幸好有這神器~

4. Genymotion 優秀的模擬器

不解釋,也不截圖了,不過現在谷歌推出的模擬器使用起來也還不錯,個人比較支持谷歌更新后的模擬器

LZ目前嘗試用的也就以上幾個,當然,還有很多優秀的插件,附上地址,大家自行瀏覽選擇使用即可~

https://www.zhihu.com/question/28026027

Android 布局優化

布局優化,這是個有意思的話題,下面通過不同例子一起來看看吧~

一、巧用android:drawab系列+Style提高代碼可讀性以及簡潔性

TextView這個東西,想必大家用的都熟透了吧?今天我們來說說如何更好玩轉TextView。

舉一個很通用的例子,微信"我"的界面布局

大家注意到"錢包","收藏","相冊"等布局了么?

以前,我們會這么寫:

 
  1. <LinearLayout?
  2. ???????android:layout_width="match_parent"?
  3. ???????android:layout_height="wrap_content"?
  4. ???????android:layout_marginTop="15dp"?
  5. ???????android:background="#FFF"?
  6. ???????android:orientation="horizontal"?
  7. ???????android:padding="15dp">?
  8. ?
  9. ???????<ImageView?
  10. ???????????android:layout_width="30dp"?
  11. ???????????android:layout_height="30dp"?
  12. ???????????android:background="@mipmap/ic_launcher_1"/>?
  13. ?
  14. ???????<TextView?
  15. ???????????android:layout_width="match_parent"?
  16. ???????????android:layout_height="wrap_content"?
  17. ???????????android:layout_gravity="center_vertical"?
  18. ???????????android:text="錢包"/>?
  19. ?
  20. ???</LinearLayout>?
  21. ?
  22. ???<LinearLayout?
  23. ???????android:layout_width="match_parent"?
  24. ???????android:layout_height="wrap_content"?
  25. ???????android:layout_marginTop="15dp"?
  26. ???????android:background="#FFF"?
  27. ???????android:orientation="horizontal"?
  28. ???????android:padding="15dp">?
  29. ?
  30. ???????<ImageView?
  31. ???????????android:layout_width="30dp"?
  32. ???????????android:layout_height="30dp"?
  33. ???????????android:background="@mipmap/ic_launcher_1"/>?
  34. ?
  35. ???????<TextView?
  36. ???????????android:layout_width="match_parent"?
  37. ???????????android:layout_height="wrap_content"?
  38. ???????????android:layout_gravity="center_vertical"?
  39. ???????????android:text="錢包"/>?
  40. ?
  41. ???</LinearLayout>?
  42. ?
  43. ???...?...??

如果點擊項多的話,反而顯得亂,而且多了很多無用的代碼,今天我們來嘗試新的玩法~

 
  1. <TextView?
  2. ???????android:layout_width="match_parent"?
  3. ???????android:layout_height="wrap_content"?
  4. ???????android:layout_marginTop="15dp"?
  5. ???????android:background="#FFF"?
  6. ???????android:drawableLeft="@mipmap/ic_launcher_1"?
  7. ???????android:drawablePadding="10dp"?
  8. ???????android:gravity="center_vertical"?
  9. ???????android:padding="10dp"?
  10. ???????android:text="錢包"/>?
  11. ?
  12. ???<TextView?
  13. ???????android:layout_width="match_parent"?
  14. ???????android:layout_height="wrap_content"?
  15. ???????android:layout_marginTop="15dp"?
  16. ???????android:background="#FFF"?
  17. ???????android:drawableLeft="@mipmap/ic_launcher_1"?
  18. ???????android:drawablePadding="10dp"?
  19. ???????android:gravity="center_vertical"?
  20. ???????android:padding="10dp"?
  21. ???????android:text="錢包"/>?
  22. ?
  23. ???...?...??

倆者實現效果如下:

TextView多的話還可以提取Style文件,代碼簡潔易讀。

二、TextView跑馬燈

附上效果圖:

部分代碼如下:

 
  1. <TextView?
  2. ???android:id="@+id/id_test"?
  3. ???android:layout_width="match_parent"?
  4. ???android:layout_height="wrap_content"?
  5. ???android:layout_marginTop="15dp"?
  6. ???android:background="#FFF"?
  7. ???android:singleLine="true"?
  8. ???android:ellipsize="marquee"?
  9. ???android:marqueeRepeatLimit="marquee_forever"?
  10. ???android:text="失戀算個啥?輕輕的,你走吧,千萬別后悔,因為只要你一揮手,就會發現,已經有那等不及的意中人,正偷偷摸摸拉你的手!"/>??

記得Activity要設置一個屬性,否則無效。

 
  1. findViewById(R.id.id_test).setSelected(true);?

要想實現跑馬燈效果,必須滿足一個條件,就是TextView內容必須超出屏幕,否則無效!當然你可以自定義。

三、關于顯示價格優化

效果如下:

按照之前的想法,我們會這么玩:

 
  1. <TextView?
  2. ?????android:layout_width="wrap_content"?
  3. ????android:layout_height="wrap_content"?
  4. ????android:text="您需要支付:"/><TextView?
  5. ????android:layout_width="wrap_content"?
  6. ????android:layout_height="wrap_content"?
  7. ????android:text="¥50"?
  8. ????android:textColor="@android:color/holo_red_light"/>??

可有簡單用法,干嘛還多寫一個TextView,這不是浪費嘛?瞧著~

string文件中這樣寫:

 
  1. <string?name="string_pay_price">您需要支付:%1$s</string>?<!--?%1$s:代碼第一位是String類型,同理,第二位%2$s?-->?

Activity定義方法:

 
  1. private?void?setPayPrice(String?payPrice)?{?
  2. ????tvShow.setText(getString(R.string.string_pay_price,?payPrice));?
  3. ????SpannableStringBuilder?builder?=?new?SpannableStringBuilder(tvShow.getText().toString());?
  4. ????ForegroundColorSpan?colorSpan?=?new?ForegroundColorSpan(Color.RED);?//?根據要求自定義顏色值?
  5. ????builder.setSpan(colorSpan,?4,?tvShow.getText().toString().length(),?Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);?
  6. ????tvShow.setText(builder);?
  7. }??

四、自動鏈接TextView內容,例如網址,電話,e-mail等

效果如下:

代碼部分:

 
  1. <TextView?
  2. ????android:id="@+id/id_test"?
  3. ????android:layout_width="wrap_content"?
  4. ????android:autoLink="all"?
  5. ????android:text="賀賀博文地址:http://blog.csdn.net/u012400885?\n查詢電話:13811604922"?
  6. ????android:layout_height="wrap_content"/>??

五、巧用LinearLayout,節省不必要代碼~

下面為大家附上一個簡單效果圖,大家首先想想,如果是你,怎么寫?

這里為大家引入另一種寫法,也就是小標題如何巧用LinearLayout

首先編寫shape文件,很簡單,設置高度和顏色。

 
  1. <shape?xmlns:android="http://schemas.android.com/apk/res/android">?
  2. ?
  3. <size?android:height="15dp"/>?
  4. ?
  5. <solid?android:color="#FFF000"/></shape>??

其次,在布局文件中設置divider以及showDividers屬性即可。

 
  1. <?xml?version="1.0"?encoding="utf-8"?><LinearLayout?
  2. ????xmlns:android="http://schemas.android.com/apk/res/android"?
  3. ????xmlns:tools="http://schemas.android.com/tools"?
  4. ????android:layout_width="match_parent"?
  5. ????android:layout_height="match_parent"?
  6. ????android:background="#FFF"?
  7. ????android:divider="@drawable/shape_0"?
  8. ????android:orientation="vertical"?
  9. ????android:showDividers="middle|beginning|end"?
  10. ????tools:context="cn.hlq.hlqstudyandroid.MainActivity">?
  11. ?
  12. ????<TextView?
  13. ????????android:layout_width="match_parent"?
  14. ????????android:layout_height="wrap_content"?
  15. ????????android:drawableLeft="@mipmap/ic_launcher_1"?
  16. ????????android:drawablePadding="10dp"?
  17. ????????android:gravity="center_vertical"?
  18. ????????android:padding="10dp"?
  19. ????????android:text="item項111"/>?
  20. ?
  21. ????<TextView?
  22. ????????android:layout_width="match_parent"?
  23. ????????android:layout_height="wrap_content"?
  24. ????????android:drawableLeft="@mipmap/ic_launcher_1"?
  25. ????????android:drawablePadding="10dp"?
  26. ????????android:gravity="center_vertical"?
  27. ????????android:padding="10dp"?
  28. ????????android:text="item項222"/></LinearLayout>??

下面簡單介紹下android:showDividers屬性:

android:showDividers="middle|beginning|end":鑒名其意,三個屬性值分別為 中間 開始部分 結束部分,也就是在三個部分顯示分割線。

有個哥兒們會說了,不是還有v7包下LinearLayoutCompat不也能實現分割線嗎?

確實,不過我試了下,感覺倆者一樣,這里就不做過分說明了~

六、禁止截屏功能,間接保護App

想想實現禁止應用截屏,只需要一行代碼,如下:

 
  1. getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);?

防止setContentView后即可,之后截屏的時候,會提示以下內容:

結束語

東西很簡單,LZ簡單總結了下,給自己留點東西~


本文作者:佚名

來源:51CTO

原文標題:Android Coding利器之掌握小技巧,助你Coding更上一層樓~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393846.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux系統報警怎么辦,常見Linux系統故障和解決方法

常見Linux系統故障和解決方法發布時間&#xff1a;2020-06-06 14:48:19來源&#xff1a;億速云閱讀&#xff1a;212作者&#xff1a;Leah欄目&#xff1a;云計算這篇文章給大家分享的是常見的Linux系統故障和解決方法。在使用系統的過程中總會有各種各樣的故障&#xff0c;所以…

Vuex 模塊化與項目實例 (2.0)

Vuex 強調使用單一狀態樹&#xff0c;即在一個項目里只有一個 store&#xff0c;這個 store 集中管理了項目中所有的數據以及對數據的操作行為。但是這樣帶來的問題是 store 可能會非常臃腫龐大不易維護&#xff0c;所以就需要對狀態樹進行模塊化的拆分。 首先貼出一個邏輯比較…

click js自動點擊 vue_vue.js2.0點擊獲取自己的屬性和jquery方法

如下所示&#xff1a;:data-index"index":dt"index"v-on:click"onclick($event,index)":data-d "JSON.stringify( item)"href"http://www.baidu.com" rel"external nofollow" rel"external nofollow"da…

Python:知識目錄

Python目錄 第一篇&#xff1a;數據類型部分文件操作 基礎數據類型---str 基礎數據類型---List 基礎數據類型---dict 基礎數據類型---set 基礎數據類型---bytes 數據類型的總結 文件操作------讀&#xff0c;寫 文件操作------使用方法 第二章&#xff1a;函數模塊 初識函數…

初學者css常見問題_5分鐘內學習CSS-初學者教程

初學者css常見問題關于網絡設計語言的快速教程。 (A quick tutorial on the design language of the web.) CSS (Cascading Style Sheets) is what makes web pages look good and presentable. It’s an essential part of modern web development and a must-have skill for …

leetcode39. 組合總和(回溯)

給定一個無重復元素的數組 candidates 和一個目標數 target &#xff0c;找出 candidates 中所有可以使數字和為 target 的組合。 candidates 中的數字可以無限制重復被選取。 說明&#xff1a; 所有數字&#xff08;包括 target&#xff09;都是正整數。 解集不能包含重復的…

一臉懵逼學習基于CentOs的Hadoop集群安裝與配置(三臺機器跑集群)

1&#xff1a;Hadoop分布式計算平臺是由Apache軟件基金會開發的一個開源分布式計算平臺。以Hadoop分布式文件系統&#xff08;HDFS&#xff09;和MapReduce&#xff08;Google MapReduce的開源實現&#xff09;為核心的Hadoop為用戶提供了系統底層細節透明的分布式基礎架構。 注…

linux批量去掉文件名前綴,linux 批量刪除某個前綴文件

1. 命令 (參考&#xff1a;https://blog.csdn.net/kl28978113/article/details/80271831)find ./ -name updatesites*-* -exec rm {} \;2. 舉例[rootadmin batch-create-sites]# ls2020-02-13-10-10.out logs-2020-04-07-08-00.out updatesites-2020-02-12-01-49-25.xlsx updat…

Docker - 避免啟動container后運行shell腳本執行完成后docker退出container

問題 最近在使用 Dockerfile 啟動容器&#xff0c;發現使用Dockerfile調用容器里面的shell&#xff0c;當shell執行完成以后&#xff0c;docker會退出容器。 分析 Docker 在執行shell的時候&#xff0c;是在后臺執行的&#xff1b;因此&#xff0c;在shell執行完成以后&#xf…

css畫橫線箭頭_用CSS繪制三角形箭頭

用CSS繪制三角形箭頭。使用純CSS&#xff0c;你只需要很少的代碼就可以創作出各種瀏覽器都兼容的三角形箭頭&#xff01;CSS代碼:/* create an arrow that points up */div.arrow-up {width: 0;height: 0;border-left: 5px solid transparent; /* left arrow slant */border-ri…

Jmeter參數化的理解

jmeter參數化有兩種情況&#xff1a; jmeter執行的sql語句中值的參數化&#xff08;如select過濾條件&#xff09;csv data set config參數表示方式${zjhm}jmx腳本的設置屬性參數化&#xff0c;方便命令行調用時修改參數&#xff08;如并發量、執行時間&#xff09;在腳本中調用…

leetcode216. 組合總和 III(回溯)

找出所有相加之和為 n 的 k 個數的組合。組合中只允許含有 1 - 9 的正整數&#xff0c;并且每種組合中不存在重復的數字。 說明&#xff1a; 所有數字都是正整數。 解集不能包含重復的組合。 示例 1: 輸入: k 3, n 7 輸出: [[1,2,4]] 代碼 class Solution {List<List…

linux內核epub,Android底層開發技術實戰詳解——內核、移植和驅動(第2版)[EPUB][MOBI][AZW3][42.33MB]...

內容簡介本書從底層原理開始講起&#xff0c;結合真實的案例向讀者詳細介紹了Android內核、移植和驅動開發的整個流程。全書分為21章&#xff0c;依次講解驅動移植的必要性&#xff0c; Goldfish、OMAP內核和驅動解析&#xff0c;顯示系統、輸入系統、振動器系統、音頻系統、視…

機器學習崗位太少_太多的東西要學習,很少的時間

機器學習崗位太少by Rick West由里克韋斯特(Rick West) 太多的東西要學習&#xff0c;很少的時間 (So much to learn, so little time) 我學習&#xff0c;保持動力并實現目標的主要技巧 (My top tips for learning, staying motivated, and achieving your goals) One of the…

用9種辦法解決 JS 閉包經典面試題之 for 循環取 i

2017-01-06Tomson JavaScript轉自 https://segmentfault.com/a/1190000003818163 閉包 1.正確的說,應該是指一個閉包域,每當聲明了一個函數,它就產生了一個閉包域(可以解釋為每個函數都有自己的函數棧),每個閉包域(Function 對象)都有一個 function scope(不是屬性),function s…

bzoj 2296: 【POJ Challenge】隨機種子

Time Limit: 1 Sec Memory Limit: 128 MBSec Special JudgeDescription1tthinking除了隨機算法&#xff0c;其他什么都不會。但是他還是可以ac很多題目&#xff0c;他用的是什么呢&#xff1f;他會選擇一個好的隨機種子&#xff0c;然后輸出答案。往往他選擇的一個好的種子可…

英特爾第十代處理器為什么不支持win7_5GHz動力澎湃 高主頻多核處理器成就巔峰玩家...

頻率之爭永遠是處理器領域無法回避的話題。高主頻在游戲中所帶來的高速運行&#xff0c;穩定幀數等特性永遠是玩家們所追求的目標。隨著英特爾第十代桌面及移動版酷睿處理器的發布&#xff0c;無論是臺式整機或是筆記本平臺&#xff0c;都已全面進入了5GHz時代。選擇英特爾處理…

leetcode46. 全排列(回溯)

給定一個 沒有重復 數字的序列&#xff0c;返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 代碼 class Solution {List<List<Integer>> cListnew ArrayList<>();public List<List<…

初級算法-12.反轉字符串

題目描述: 編寫一個函數&#xff0c;其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 char[] 的形式給出。 不要給另外的數組分配額外的空間&#xff0c;你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。 你可以假設數組中的所有字符都是 ASCII 碼表中的可打…

linux python源碼目錄結構,TensorFlow0.8源碼閱讀 -- 代碼目錄結構講解

TensorFlow0.8發布以來受到了大量機器學習領域愛好者的關注&#xff0c;目前其項目在github上的follow人數在同類項目中排名第一。作為google的第一個開源項目&#xff0c;TensorFlow的源碼結構較為清晰&#xff0c;相關的代碼注釋覆蓋較全。本文首先從代碼結構入手&#xff0c…