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.mzph.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;所以就需要对状态树进行模块化的拆分。 首先贴出一个逻辑比较…

一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

1&#xff1a;Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台。以Hadoop分布式文件系统&#xff08;HDFS&#xff09;和MapReduce&#xff08;Google MapReduce的开源实现&#xff09;为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。 注…

linux内核epub,Android底层开发技术实战详解——内核、移植和驱动(第2版)[EPUB][MOBI][AZW3][42.33MB]...

内容简介本书从底层原理开始讲起&#xff0c;结合真实的案例向读者详细介绍了Android内核、移植和驱动开发的整个流程。全书分为21章&#xff0c;依次讲解驱动移植的必要性&#xff0c; Goldfish、OMAP内核和驱动解析&#xff0c;显示系统、输入系统、振动器系统、音频系统、视…

用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时代。选择英特尔处理…

linux python源码目录结构,TensorFlow0.8源码阅读 -- 代码目录结构讲解

TensorFlow0.8发布以来受到了大量机器学习领域爱好者的关注&#xff0c;目前其项目在github上的follow人数在同类项目中排名第一。作为google的第一个开源项目&#xff0c;TensorFlow的源码结构较为清晰&#xff0c;相关的代码注释覆盖较全。本文首先从代码结构入手&#xff0c…

在VirtualBox里复制VDI文件[转]

原文地址:http://blog.sina.com.cn/s/blog_591a2c940100aree.html 在VirtualBox的快速修复界面里&#xff0c;可以随时生成当前状态的备份。当生成了备份之后&#xff0c;会在Snapshots目录下创建一个新的VDI文件&#xff0c;之后对当前状态所做的一切操作都将针对最新的VDI文件…

自动登录360,百度

方便登录&#xff0c;写的小工具 1 import win.ui;2 import web.ui;3 /*DSG{{*/4 var winform ..win.form(text"AAuto Form";right599;bottom399)5 winform.add(6 button{cls"button";text"百度";left41;top25;right163;bottom59;z1};7 button2…

arm linux 开机电路_【技术角度看问题之一】ARM到底是个啥?

【小宅按】近期公司推出来基于ARM芯片的服务器&#xff0c;本文就一些基本概念&#xff0c;比如ARM&#xff0c; ARM64, ARMv8, ARM7&#xff0c;ARMv7, 64位等让人费解的概念进行了粗浅地分析&#xff0c;涉及的关键字已用粗体标出。文中观点仅仅是一家之言&#xff0c;拙劣之…

WPF多线程UI更新

前言 在WPF中&#xff0c;在使用多线程在后台进行计算限制的异步操作的时候&#xff0c;如果在后台线程中对UI进行了修改&#xff0c;则会出现一个错误&#xff1a;&#xff08;调用线程无法访问此对象&#xff0c;因为另一个线程拥有该对象。&#xff09;这是很常见的一个错误…

Flutter 36: 图解自定义 View 之 Canvas (三)

小菜继续学习 Canvas 的相关方法&#xff1a; drawVertices 绘制顶点 小菜上次没有整理 drawVertices 的绘制方法&#xff0c;这次补上&#xff1b;Vertice 即顶点&#xff0c;通过绘制多个顶点&#xff0c;在进行连线&#xff0c;多用于 3D 模型中&#xff1b; drawVertices 包…

程序员必知之浮点数运算原理详解

导读&#xff1a;浮点数运算是一个非常有技术含量的话题&#xff0c;不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题。 许多人使用float/double进行货币计算时经常会犯错。这篇文章是这一系列中的精华&#xff0c;所有的软件开发人员都应…

工程代码_Egret开发笔记(二)基础工程代码阅读

代码目录结构在Egret Wing中打开上一节中我们创建的项目工程&#xff0c;查看代码目录结构&#xff0c;Forward在如下图中标记了各个目录的及关键文件的用途。代码阅读理解接下来我们从web入口一步一步阅读初始代码。首先打开index.html文件&#xff0c;我们看到index文件内容如…

知晓云助力小程序开发

小程序开发遇到瓶颈虽然腾讯提供了小程序解决方案&#xff0c;https://cloud.tencent.com/solution/la。但是对于普通开发者或者小企业的开发人员来说&#xff0c;购买域名&#xff0c;网站备案、部署SSL证书&#xff0c;安装会话服务器。业务逻辑上要使用数据库&#xff0c;缓…

Cracer渗透-windows基础(系统目录,服务,端口,注册表)

系统目录C:\Windows\system32\config\SAM (保存系统密码) 无法正常修改&#xff0c;可以进入PE系统进行修改&#xff08;先备份在清空&#xff09;利用结束后&#xff0c;再将之前备份的恢复C:\Windows\System32\drivers\hosts&#xff08;域名解析文件&#xff09;hosts欺骗&a…

java--xml文件读取(SAX)

SAX解析原理&#xff1a; 使用Handler去逐个分析遇到的每一个节点 SAX方式解析步奏&#xff1a; 创建xml解析需要的handler&#xff08;parser.parse(file,handler)&#xff09; package com.imooc_xml.sax.handler;import java.util.ArrayList;import org.xml.sax.Attributes…

imp命令导入指定表_Sqoop 使用shell命令的各种参数的配置及使用方法

点击上方蓝色字体&#xff0c;选择“设为星标”回复”资源“获取更多资源本文作者&#xff1a;Sheep Sun本文链接&#xff1a;https://www.cnblogs.com/yangxusun9/p/12558683.html大数据技术与架构点击右侧关注&#xff0c;大数据开发领域最强公众号&#xff01;暴走大数据点击…

ik分词和jieba分词哪个好_Pubseg:一种单双字串的BiLSTM中文分词工具

中文分词是中文自然语言处理中的重要的步骤&#xff0c;有一个更高精度的中文分词模型会显著提升文档分类、情感预测、社交媒体处理等任务的效果[1]。Pubseg是基于BiLSTM中文分词工具&#xff0c;基于ICWS2005PKU语料训练集训练而成&#xff0c;其优点在于在ICWS2005-PKU语料下…