![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android
文章平均质量分 69
Android 相关知识点
CnPeng
公众号:CnPeng
GitHub : https://github.com/CnPeng/LearningNotes
展开
-
一篇就够——Kotlin快速入门
文章内容主要是基于传智播客《kotlin从零基础到进阶》的视频做的笔记。标题中的 V 是Video的缩写,V4 就是对应视频中的第四个视频。V4、程序入口--main函数imageV5、变量与输出1、变量的声明:var name=“张三” //变量声明关键词 var , 语句末尾不需要分号2、数据额类型imageV6、二进制基础image...原创 2018-05-11 07:42:47 · 543 阅读 · 0 评论 -
android:运行时权限工具类的封装
一、为什么封装?众所周知,Android 从 6.0开始引入运行时权限机制,将权限分为了普通权限和危险权限 ,对于危险权限我们必须在使用的时候动态的去申请。但是,如果我们在每一个界面中把申请权限的代码全都写一遍,是很费力气的事情,而且不利于代码的维护,所以就需要封装。当然了,目前各位大佬前辈们已经封装了很多优秀的工具类,比如鸿洋大神在 Android 6.0 运行时权限处理完全解析 ...原创 2017-12-05 21:34:54 · 191 阅读 · 0 评论 -
Android Studio中关联SVN进行版本控制(三)如何更改文件名
将代码与SVN进行关联之后,如果想更改已有的文件/文件夹名,不要直接修改,否则会报错需要按照下图通过SVN进行操作原创 2016-08-13 14:26:18 · 465 阅读 · 0 评论 -
Android Studio中关联SVN进行版本控制(一)关联到服务器
Android Studio中关联SVN进行版本控制的步骤原创 2016-08-05 01:20:30 · 444 阅读 · 0 评论 -
android:Json-Bean、List互转工具类
Json字符串与Bean,Json字符串与List 互转工具类。public class GsonUtil { private static Gson gson = new Gson(); private GsonUtil() { } /** * 转成json */ public static String beanToString...原创 2017-10-20 15:39:14 · 289 阅读 · 0 评论 -
6.0--TabLayout使用介绍(2)
180928更新关于指定条的宽度,在support28 / androdix 的版本添加了属性设置app:tabIndicatorFullWidth为false时自适应文字的宽度, 还有反射里面的mTabStrip也改成了slidingTabIndicator,如果是更高的版本再使用mTabStrip会报空指针。相关文章:6.0--TabLayout使用介绍(1)在6.0--TabLay...原创 2016-12-08 10:08:02 · 143 阅读 · 0 评论 -
AlertDialog--未关闭AlertDialog引发的溢出
1 、事件背景:当前有这么一个需求,从 A activity 跳转到 B activity , 然后在 B activity 界面中展示一个 自定义View 的AlertDialog (注意,只是通过setView( ) 方法自定义了view内容,并不是自定义控件),该view包含两个 Button ,一个取消一个确定,点击取消关闭当前页面并返回A ;点击确定 关闭当前页面 并跳转到 C ac...原创 2017-04-11 09:44:54 · 271 阅读 · 0 评论 -
6.0--TabLayout使用介绍(1)
1.TabLayout基本介绍TabLayout是安卓6.0推出的,可以替代 ViewPagerIndicator 的一个控件,存放在 design 包下,继承自 HorizontalScrollView 。使用的时候需要先导入 android.support.design.widget 包。2. TabLaout的使用介绍(1). 单独使用TabLayout使用TabLayout的时候,...原创 2016-12-08 09:27:48 · 167 阅读 · 0 评论 -
FontMetrics以及自定义ImageSpan实现TextView中文图混排时文图的居中对齐
这个标题有点长,乍一看这么个标题你可能没明白啥意思,且听我慢慢道来。公司的项目中新增了一个“心动” 的功能,用户初次使用时需要给一个引导页,就是下面图中的这个样子(这就是做完之后的效果了)。Paste_Image.png在上图中整体实现的时候使用的是popUpWindow。该popupWindow整体使用相对布局,里面再用一个相对布局布局嵌套了三个TextView:"啊哦。。。。pa...原创 2017-02-24 18:52:17 · 406 阅读 · 0 评论 -
ViewStub--使用介绍
(1)什么时候使用ViewStub?为什么使用ViewStub?当我们需要根据某个条件控制某个View的显示或者隐藏的时候,通常是把可能用到的View都写在布局上,然后设置可见性为View.GONE或View.InVisible ,之后在代码中根据条件动态控制可见性。虽然操作简单,但是耗费资源,因为即便该view不可见,仍会被父窗体绘制,仍会创建对象,仍会被实例化,仍会被设置属性。而andro...原创 2017-01-11 17:00:02 · 262 阅读 · 0 评论 -
ExpandableListView--基本使用介绍
1 什么是ExpandableListView?有啥作用?首先看一张ExpandableListView 的继承关系图:ExpandableListView的继承关系根据上图可知,ExpandableListView是ListView的子类。而expandable 在英文中的意思是可扩展的,所以ExpandableListView就是一个可以扩展的、有层级的ListView。Ex...原创 2017-01-21 17:27:01 · 361 阅读 · 0 评论 -
[AndroidStudio]快捷键整理--1
快捷键整理系列文章地址:AndroidStudio快捷键整理--1 AndroidStudio快捷键整理--2AndroidStudio快捷键整理--3AndroidStudio快捷键整理--4AndroidStudio快捷键整理--5该系列文章中的内容都是经过实践之后整理出来的.有一些我也不知道怎么用或者没有达到预期效果的,就直接使用全英文描述或者标注 '我也不知道咋用' 之类的文字。...原创 2017-06-15 20:16:00 · 149 阅读 · 0 评论 -
Toast--自定义Toast的显示风格
在安卓应用中Toast的使用频率是非常高的,关于Toast的基本使用这里就不再啰嗦,这里只说一下怎么去更改Toast的显示风格,让Toast不再是千年不变的黑框框。先上效果图:toast.gif1 方式1 :使用Toast类的setView( )在Toast类中,有一个 setView( view ) 方法,该方法的作用就是用传入的view替换默认的那个黑框框。使用setVie...原创 2017-02-27 18:53:37 · 306 阅读 · 0 评论 -
将APP加入系统分享+根据Uri获取绝对路径
1 需求分析当前项目中需要将我司的APP加入系统分享中,然后接收外部分享过来的数据。单纯看需求貌似是很简单,然后认真整理了一下思路,呵呵。。。具体看下图吧。Paste_Image.png2 实现需求时的主要知识点实现这个需求的时候,主要的知识点如下。(1)将app加入系统分享假设我们用一个EditActivity 来接收并展示分享过来的数据。那么为了能够让 EditActi...原创 2017-05-17 20:55:50 · 334 阅读 · 0 评论 -
AS编译报错“元素内容必须由格式正确的字符数据或标记组成” 的解决
1 事件背景我将自己每个月写的demo都放在一个project中,然后提交到了gitHub上,按照正常的操作流程,本地修改后,先commit 到本地,然后pull 拉取gitHub 的代码,merge 冲突,然后push 将本地修改推送到gitHub。but ,昨天临下班的时候push完后再次 编译,报错 “元素内容必须由格式正确的字符数据或标记组成”。由于昨晚公司年会,所以就想着年会结束回家...原创 2017-01-23 10:39:09 · 577 阅读 · 0 评论 -
BottomNavigationView--基本使用总结
1、BottomNavigationView 是什么?BottomNavigationView 是安卓官方提供的底部导航栏,能够方便的实现下图中的底部导航效果。Paste_Image.png按照 官方的设计规范 https://material.io/guidelines/components/bottom-navigation.html# 当底部导航的标签在 3--5 个之间的时...原创 2017-04-12 13:01:40 · 359 阅读 · 0 评论 -
[AndroidStudio]TODO中patterns丢失,无法使用TODO的解决
今天稀里糊涂的把TODO菜单中的 patterns 误删除了,然后就出现了下图中的情况,整个项目的TODO都不展示了,很是不方便image.png解决方案是,从设置中重新添加patterns。具体步骤如下图:image.png注意: TODO 和 FIXME 都是属于TODO菜单中的,FIXME的使用方法和TODO一致。通常,TODO用来标识代办的事项,FIXME 标识...原创 2017-06-13 21:47:13 · 200 阅读 · 0 评论 -
ViewPager--实现多个Fragment中的数据同步
当前做的项目中,需要实现点击 “通知编辑界面” 中的 ???? 跳转到 “附件选择界面”。附件选择界面实现的思路是 Activity+TabLayout+ViewPager,ViewPager 中嵌套Fragment,fragment 中只用一个lv展示数据。通知编辑界面.png选择附件.png在上图中,“全部” 标签中展示本地所有的文件,“文档”中只展示本地的文档,“图片” ...原创 2017-01-09 17:16:36 · 343 阅读 · 0 评论 -
WebView--自定义加载页面异常提示
Android项目中,难免会用到WebView 加载网页内容,如果由于网络异常等原因导致页面内容无法加载出来的时候就会报错,默认报错内容如下图:Paste_Image.png在上面的图中我们可以看到,如果不做处理的话,报错信息中会包含我们连接到的网址,但实际上我们可能不想让用户看到网址,那么这个时候我们就需要使用自定义的错误提示页面。既然想使用自定义错误提示,那我们就需要先知道啥时...原创 2017-01-06 18:08:52 · 284 阅读 · 0 评论 -
android--待总结:WebView的基本使用以及与H5互调
参考文章:http://blog.csdn.net/qq_24530405/article/details/52067474Android WebView使用详解包括js互调android 和JS互调Android与js的互调实例原创 2017-09-22 09:57:42 · 154 阅读 · 0 评论 -
[AndroidStudio]更改字体字号
具体步骤看图Paste_Image.png总结:A由于不能直接修改默认主题,所以,需要在更改之前先 save as 另存一个主题B其他事项,参考 AndroidStudio -- 更改背景色...原创 2016-12-20 23:08:08 · 141 阅读 · 0 评论 -
Intent -- 传递数据
1、Intent 可以传递的数据类型在 Intent和IntentFilters(1) 中我们知道了通过 Intent 的putExtra( ) 方法可以实现组件之间的数据传递。那么putExtra( ) 方法能够传递的数据类型由哪些限制呢?下面这张图是我从AndroidSrudio中截取的,这张图里列出了所有可以通过intent传递的数据类型。putExtra.png根据这张图...原创 2016-12-26 10:16:07 · 529 阅读 · 0 评论 -
利用ThemeEditor快速修改app的主题样式(主要是颜色样式)
今天用到一个知识点,就是修改radioButton颜色,一般更改radioButton都是将他的button属性设置为null,然后写一个selector,然后正常状态和选中状态分别给出一张图片, 在将这个selector设置为RadioButton的background.但我现在只是需要更改radioButton 的颜色,就没有必要再去写一个selector,可以直接使用ThemeEditor...原创 2016-09-12 23:21:23 · 189 阅读 · 0 评论 -
小知识--TextUtils.isEmpty与String.isEmpty
今天在腾讯Buggly中查看我司APP错误日志时发现这么一个错误:Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference com.zjelite.login.utils.WebKeyUtils$4.handleMessage(WebKeyUtils.java:3...原创 2016-12-08 11:55:47 · 186 阅读 · 0 评论 -
ListView--实现lv条目中指定控件的点击事件
1. 目的:在ListView 的每一个item 条目中,加入一个删除按钮,当点击删除按钮的时候,删除该条目;点击删除按钮之外的条目内容时响应条目的点击事件。具体效果如下所示:clickItemContent.gif2 . 实现思路及步骤:以回调的方式来实现(1)让当前activity实现clickListener(或者在activity中单独new 一个监听器对象)。...原创 2016-12-22 22:42:02 · 212 阅读 · 0 评论 -
DataBinding 注意事项 -- ListView (1)
在 ListView 的适配器中使用数据绑定时,有以下特别需要注意的地方:1. DataBindingUtils.inflate ( ) 和 binding.getRoot( )adapter 的 getView( ) 方法中,如果converView 为null 时,使用 DataBindingUtils.inflate ( ) 方法填充布局。然后 获取binding 对应的root的布局...原创 2016-12-18 21:58:17 · 179 阅读 · 0 评论 -
设置TextView随机字体颜色
设置随机字体颜色安卓中的字号一般都是12 或者14以上通过rgb设置随机颜色值//获取随机rgb颜色值public static intrandomColor(){ Random random = new Random(); int red =random.nextInt(150);//0-190 ,如果颜色值过大,就越接近白色,就看不清了,所以需要限定范...原创 2016-09-12 23:34:33 · 250 阅读 · 0 评论 -
自定义Log工具
(1) 为什么要自定义Log:在代码编写和测试过程中,必然少不了打印Log 日志。但是,往往我们在用完了Log 之后要么就忘记了去关闭它 -- 这样会影响应用的运行效率;要么就要手动一个个的去找到它然后注释掉 -- 这也是一件非常痛苦的事情。所以,我们需要自定义Log, 将AS的log 进行包装,当我们的项目要上线的时候,统一控制和关闭Log(2) 具体代码:package Common...原创 2016-12-18 20:02:23 · 168 阅读 · 0 评论 -
[AndroidStudio]更改背景色
AndroidStudio 默认有两个主题,一个背景色是白色,另一个背景色是黑色,两个看着都不顺眼,那就自定义一下工作区的背景色。大致步骤:Settings -->Editor --> Colors&Fonts -->General -->Save as -->Text -->Default text -->backgroundPas...原创 2016-12-20 23:03:42 · 1614 阅读 · 0 评论 -
Intents 和 Intent Filters (1)
1 前言在Android 中,intent 的用途是比较广泛的,可以用来开启 activity 、开启 services 、开启 broadCast ,并且在开启这些组件的同时传递数据。IntentFilter 则是定义在清单文件AndroidManifes.xml 中用来匹配组件可以接收哪些intent。今天就按照 官方API Guides 中的内容,解读intent 和 Intent Fi...原创 2016-12-25 19:16:18 · 196 阅读 · 0 评论 -
ListView--实现lv条目中指定控件的点击事件(2)
在上一篇 ListView--实现lv条目中指定控件的点击事件 中,我们用回调的方式实现了lv条目中指定控件的点击事件。当前要写的这篇文章中,思路和步骤跟上一篇一致,不同点就是我们在代码中使用了 DataBinding数据绑定 。DataBinding 数据绑定 是MVVM 模式的体现,在代码中使用DataBinding 之后可以简化代码,将view 层 和modle 层更好的分离。关...原创 2016-12-23 00:32:07 · 176 阅读 · 0 评论 -
Android:应用内部截屏的实现
/** * 作者:CnPeng * <p> * 时间:2017/6/27:下午3:06 * <p> * 说明:应用程序内部截屏的实现(不截状态栏,兼容5.0 以上及以下版本) * -- 申请写入SD的权限 * -- 实现应用内截取屏幕的功能(不截状态栏) * -- 计算状态栏的高度(两种方式) * -- 发送广播通知相册/图库刷新数据 */publi...原创 2017-06-30 16:11:01 · 326 阅读 · 0 评论 -
Android:ListView局部更新(单条数据更新)
1 ListView为什么需要局部刷新?使用ListView时,如果数据发生变化,通常会使用 notifyDataSetChanged( ) 方法去通知适配器刷新界面。但是 notifyDataSetChanged( ) 是刷新全部数据和数据对应的view,如果数据量较大的话,这是比较消耗资源的。所以我们就需要考虑如何实现ListView的局部更新。其实,在RecyclerView中,当列表...原创 2017-08-24 22:01:28 · 1700 阅读 · 0 评论 -
AndroidStudio快捷键整理--5
快捷键整理系列文章地址:AndroidStudio快捷键整理--1 AndroidStudio快捷键整理--2AndroidStudio快捷键整理--3AndroidStudio快捷键整理--4AndroidStudio快捷键整理--5/(ㄒoㄒ)/~~ 这一篇有点凑数的嫌疑啊,因为好多我也不知道该怎么使用。。。/(ㄒoㄒ)/~~文中内容 对应 keymap -- 对应 keymap --...原创 2017-06-20 22:30:54 · 163 阅读 · 0 评论 -
android:SwipeRefreshLayout与ViewPager 冲突的解决
一、问题描述整体架构示意图当前项目首页面的整体架构如上图,标号及其对应内容为:标号内容1自定义的SwipeRefreshLayout的子类 + ListView2ListView的头布局(含轮播图、话题栏、最新动态标题栏)3轮播图存在的问题是,在轮播图区域侧划切换图片的时候,只要稍微有一点点的下移动作,就会触发外层SwipeRefresh...原创 2017-09-14 16:44:15 · 238 阅读 · 0 评论 -
Android:双击退出应用的实现
1 需求效果为了防止用户点击返回键就直接退出APP,通常会加入一个双击退出的要求。如果用户在两秒之内重复点击了返回键,则执行退出操作;如果用户点击了一次返回键之后,超过两秒未再次点击,则不响应退出事件。效果图如下:BottomNavigationView.gif2 需求分析实现这种需求的整体思路就是监测返回键,然后监测是否在指定时间之内再次点击了返回键。(1)监测返回键有三种...原创 2017-06-23 17:08:57 · 150 阅读 · 0 评论 -
android:简单包装实现伪自定义DatePickerDialog和TimePickerDialog
之所以写这个东西,是因为在我们的设计中需要给 日期选择器加一个标题,一开始直接使用 原生的 DatePickerAlertDialog ,因为他继承自 AlertDialog ,所以就直接 调用了 setTitle 方法,然而,丑的那叫一塌糊涂啊。所以,最后只好自己简单包装一下。内容简单,不做过多解释,直接上代码。1 伪自定义的DatePickerDialog效果图:S70904...原创 2017-09-04 15:32:39 · 215 阅读 · 0 评论 -
AndroidStudio快捷键整理--3
快捷键整理系列文章地址:AndroidStudio快捷键整理--1 AndroidStudio快捷键整理--2AndroidStudio快捷键整理--3AndroidStudio快捷键整理--4AndroidStudio快捷键整理--5文中内容 对应 keymap -- Main menu 中的 Code、Analyze、Refactor主要包含如下内容: * 方法的重写实现、用快...原创 2017-06-20 09:26:05 · 143 阅读 · 0 评论 -
[AndroidStudio]快捷键整理--2
快捷键整理系列文章地址:AndroidStudio快捷键整理--1 AndroidStudio快捷键整理--2AndroidStudio快捷键整理--3AndroidStudio快捷键整理--4AndroidStudio快捷键整理--5文中内容 对应 keymap -- Main menu 中的 File、Edit、Find、View、Navigate、Bookmarks.主要包含如下内容...原创 2017-06-19 22:31:20 · 173 阅读 · 0 评论 -
android: Webview处理404、500、断网、timeout页面的问题
一、问题描述当前APP中有很多跳转H5的情况,使用的是WebView去加载。如果某个H5页面不存在,那么就会跳转到WebView默认的404页面,在某些手机上这个页面可能就是一个空白页面。然后,我司测试给设计说,不行了,太丑了!要设计一个好看点的,然后就有了本文的需求——定制404页面。初始的时候直接调用了onReceivedError 发现无法正常监测错误码,后来又调用onReceived...原创 2017-10-16 16:00:22 · 607 阅读 · 0 评论