Android
文章平均质量分 79
杨小帆_
沉下心来做技术
展开
-
Android入门笔记(二)
二、关于单例设计模式和代码的复用 2.1单例设计模式 单例设计模式,顾名思义是指一个对象只有一个唯一的实例,这种设计模式也多用于工具类的创建,如 java 中的一些数学函数工具类。并且对于单例来说,应用能够在内存中存活多久,单例就能够在内存中存活多久,且单例随 Android 的内从清理应用而消失。单例的能够方便的存储和控制模型对象,但单例无法做到持久存储且不利于...原创 2018-09-23 14:03:48 · 244 阅读 · 0 评论 -
Android 使用 TabLayout 实现底部导航栏简明教程(超详细)
一、实现效果:二、实现方式TabLayout + ViewPager + FragmentPagerAdapter + Fragment三、目录结构四、具体实现流程4.1 TabFragmentPagerAdapter 的创建 这一步相对来说比较简单,只需要创建 Adapter 类并使其继承 FragmentPagerAdapter ,通过构造器获取其...原创 2019-01-29 18:56:20 · 5492 阅读 · 3 评论 -
Android 浅谈 MPAndroidChart 坐标轴设置为字符串的方法
一、问题背景 最近在做项目,然后项目当中的一个要求是需要实现横坐标坐标值为字符串(因为后端给的时间的数据就是转成字符串的格式发过来的)、纵坐标为数字,众所周知,在 MPAndroidChart 中默认的坐标轴的坐标值都是 float 类型的,所以我上网进行了相关资料的查询并进行了相关的试验,最后完成的效果大致如下。 因为项目还在数据测试阶段,数据量较少,所以看起...原创 2019-02-27 21:20:44 · 4405 阅读 · 0 评论 -
Android SharedPreferences 封装使用技巧
一、背景 SharedPreferences 是众所周知的 Android 三大数据持久化存储之一,其余两个分别是文件存储和数据库存储,之前在使用的时候一般就都是直接调用 PreferenceManager.getDefaultSharedPreferences() 然后再进行一系列的链式操作,对需要存储的数据进行存储和获取,但是我们一般都是在很多地方都需要使用到对 SharedP...原创 2019-02-27 22:19:59 · 707 阅读 · 0 评论 -
Android 关于bean 的数据封装
一、背景介绍 因为近期一直在做一个项目,之前对 MVP 架构和一些热门的第三方框架也是仅限于理论的理解,所以打算借着这次这个项目能对 MVP 架构以及相关热门第三方库有更深一步的了解。在这个项目的实际搭建过程中,我也进行了很多资料的查询,学习到了许多防止内存泄漏和对相关操作的一些封装,这些小的技巧和知识点都使我在做项目的过程中受益匪浅。因此,正好项目已经接近尾声,所以打算对之前一些...原创 2019-02-23 20:56:58 · 2196 阅读 · 0 评论 -
浅谈关于项目的本地数据测试(基于 WAMP 和 NATAPP)
一、背景介绍 因为我个人在去年的时候曾经做过一个小程序+网页的一整套系统,包含前端编码、后端编码、数据库设计、服务器搭建等等的整整一整套工作,在项目的开发过程中,刚一开始遇到的最棘手的一个问题就是当前端页面已经写好后,怎样去进行本地的数据测试,也就是测试程序能否通过网络请求到正确的数据,而且对于当时的小程序开发,其请求的网址必须是包含 SSL 协议的,也就是必须是以 https 开...原创 2019-02-24 09:34:59 · 358 阅读 · 0 评论 -
Android 解决 ViewPager 高度 wrap_content 无效问题
问题:昨晚在做项目的时候遇到一个问题,就是关于 ViewPager 的高度使用 wrap_content 设置无效问题,然后查找了很多资料,找到了一个比较靠谱的解决方案。大概的原理就是继承原有的 ViewPager 类,并对它的 OnMeasure 方法进行重写,使 ViewPager 的高度为其子视图的最大高度值。关于 OnMeasure 测量过程的详细过程,可以参考 《Android开发艺...原创 2019-02-18 21:57:22 · 1377 阅读 · 1 评论 -
Android 一种关于解决 No view found for id xxxx for fragment xxxx 问题的方案
一、问题描述 因为一直在参加比赛开发一款 APP ,然后今天在测试的时候发现了一个问题,即当打开进入 APP 后,走过以下路径近期记录——》班级——》打开班级详情——》个人中心——》当前课堂时(下面的动图为已修复后的路径演示),出现了软件闪退的情况。 经过查找,找到了软件崩溃时的错误记录如下:2019-02-25 14:49:56.735 1200...原创 2019-03-07 13:51:11 · 21549 阅读 · 1 评论 -
Android RxJava 关于网络请求时线程调度的封装
一、问题背景 之前在做项目使用 RxJava 写有关网络请求的代码的时候,因为对于网络的请求需要在 IO 线程中进行,而 UI 的更新则必须在主线程,所以总是要进行翻来覆去的进行固定的线程切换,我就想是不是可以将这种重复的工作抽离出来,于是上网搜索了相关的 RxJava 的网络请求封装,网上对于 RxJava 网络请求的封装还是挺多的,但是最如果只想要实现最简单的网络请求时的线程...原创 2019-02-25 22:30:53 · 670 阅读 · 0 评论 -
Android 关于 ViewPager 高度设置为 wrap_content 无效原因的思考
一、问题背景 这个问题其实是我之前做项目时遇到的一个问题,就是在我的一个页面当中有一个页面的结构是 TabLayout + ViewPager + RecyclerView ,通过这个结构来实现一个动态的可以通过滑动上方导航进行下方列表切换的功能。当时遇到的一个问题就是当我 TabLayout 中ViewPager 的高度属性设置为 wrap_content 的时候,出现的效果是...原创 2019-03-14 17:25:18 · 1597 阅读 · 1 评论 -
谈谈关于 AsyncTask 、HandlerThread 和 IntentService 的源码
一、开篇语因为最近在进行 Android 方面的一些知识点的整理,发现有一些比较细节的问题都是以前没有注意到的,而且之前对于 AsyncTask、HandlerThread 和 IntentService 的理解也不是很透彻,所以正好借着这次机会进行一下整理,捋清思路,增强自己对它们的更深一层的理解。这篇博文的话,我们会主要从这三个类的概念、使用的方式、源码和一些需要注意细节进行讲解,因为...原创 2019-03-21 17:32:09 · 647 阅读 · 0 评论 -
实习面试结束后的一些思考(已拿腾讯实习 offer)
机会只留给有准备的人先简单自我介绍一下吧,我是一名中末流 211大学的一名大二学生,也就是 21届毕业生,起初是在大一开始之前的暑假里在学姐的建议下提前进行了 C语言的学习,然后开学之后的话继续进行了一小段时间的 C语言学习后就进入到了数据结构的学习当中,学习的基本方式也就是通过看浙大的网课和做它配套的习题。在完成了数据结构的学习之后,我借着七天的国庆假期(因为自己的家离学校比较远所以...原创 2019-03-30 16:12:23 · 2587 阅读 · 2 评论 -
浅析 Android 中 Binder 的上层原理
纸上得来终觉浅,绝知此事要躬行Binder 一直是我心里的一个坎儿,因为不管是 Android 中的哪个组件,都总是会或多或少的涉及 Binder。对于 Binder 是 Android 为了提升其自身的进程间通信效率而发明的一种进程间通信的方式,其底层就涉及到了操作系统方面的一些内容,比如用户态、内核态和内存映射等等一系列的底层知识。也因为它的底层体系太过复杂,所以一直不能很好的去理...原创 2019-04-05 21:25:46 · 373 阅读 · 0 评论 -
关于 Android 中 TabLayout 下划线适配文字长度解析(附清晰详细的源码解析)
温故而知新 坚持原创 请多多支持一、问题背景假期在做项目的时候,当时遇到了一个需求就是需要使用 TabLayout + ViewPager 来实现一个上部导航栏的动态效果,并且希望下划线的长度等于或者小于导航栏中文字的宽度,当时从网上查询资料的时候是发现目前大概是有这么三种思路来实现,第一种比较简单,就是直接通过自定义 CustomView 并在代码中动态设置给 Tab 即可,而另一种...原创 2019-04-08 20:46:04 · 4842 阅读 · 0 评论 -
Android selecotor 中无法引用 mipmap 文件
问题:今天在配置 selector 文件的时候发现无法引用 mipmap 文件。解决方案:强行引用,写就完事儿了,因为当我们写 mipmap 时 AS 没有补全提示,并且在写的过程中会一直报错,但是一旦你写完整了,就不会报错了,亲测有效。<?xml version="1.0" encoding="utf-8"?><selector xmlns:android=...原创 2019-01-29 14:39:56 · 3912 阅读 · 0 评论 -
Android 屏幕适配的 dimens 文件生成
详细解决方案地址:https://blog.csdn.net/bobby_fu/article/details/79699353问题:昨天开始做项目遇到了很棘手的问题,设计师给的 UI 设计图和实际尺寸不匹配,因为之前对适配了解还是比较少的,不知道要做屏幕的适配,查找了很多资料,最后找到了一款很靠谱的自动生成多种分辨率 dimens 文件的 AS插件。解决方案:https://...原创 2019-01-28 23:18:49 · 486 阅读 · 0 评论 -
Android入门笔记(三)
三、RecyclerView、ViewHolder 和 Adapter 3.1 功能概括RecyclerView :任务仅限于回收和定位屏幕上的 View,且其自身不会创建视图,它创建的只是 ViewHolder,通过绑定的 Adapter 来进行工作。ViewHolder:容纳 View 视图,引用 itemViewAdapter:Adapter 是一个控制器对象,...原创 2018-09-23 15:00:37 · 220 阅读 · 0 评论 -
Android入门笔记(四)
四、fragment argument 和 页面数据更新 4.1 为什么要使用 fragment argument 当 fragment 和 activity 间的数据进行传递时,如果只是简单的使用 intent 的 extra 来进行传递信息,不仅破坏了 fragment 的封装,停驶也使得 fragment 变为不可复用的结构单元,而使用 fragment argum...原创 2018-09-23 20:46:11 · 287 阅读 · 0 评论 -
Android入门笔记(五)
五、ViewPager 5.1 ViewPager 的作用为 UI 添加 ViewPager 后,用户可以左右滑动屏幕,切换查看不同列表项的明细页面。 5.2 ViewPager 的实现(1)创建布局文件,设置根元素为 ViewPager,可命名为:activity_article_pager.xml(注意命名规则)。(2)创建托管 fragment 的 activit...原创 2018-09-24 12:36:54 · 157 阅读 · 0 评论 -
Android入门笔记(六)
六、对话框的使用 和 fragment之间的数据传递 6.1 DialogFragment(1)创建 fragment 文件,继承 DialogFragment 类,可命名为:DatePickerFragment.java(注意命名规则)。(2)重写 onCreateDialog 方法,使用 AlertDialog.Builder 类的构造方法返回一个 AlertDialog.Bu...原创 2018-09-24 15:22:08 · 193 阅读 · 0 评论 -
Android入门笔记(七)
七、工具栏的使用 7.1 工具栏菜单的创建(1)在 res/menu 中创建资源类型为 Menu ,且命名同工具栏所在页面布局(layout 中的文件)命名保持一致。这个文件和其所在页面的布局文件同名,只是位于不同的目录,当实例化组件时,系统会分别取不同的目录下进行加载。(2)出于兼容性考虑,AppCompat 库需要使用 app 命名空间。所以在菜单资源文件中使用 xmlns 标...原创 2018-09-24 20:31:12 · 235 阅读 · 0 评论 -
Android入门笔记(八)
八、隐式 Intent 8.1 getString 方法的使用(1)通过 getString 方法传入 res/values/strings 中的字符串 ID ,即可返回对应的字符串信息。(2)在 res/values/strings 中设置字符串内容中带有特殊字符串作为占位符后,即可在通过使用 getString 方法,传入格式化字符串资源 ID 以及另外的字符串参数(与要替换的...原创 2018-09-25 19:26:02 · 216 阅读 · 0 评论 -
Android入门笔记(九)
九、文件存储 和 使用相机 Intent 9.1 文件存储9.1.1文件存储的相关方法文件存储时主要使用的是 Context 类,其提供的基本文件和目录处理方法如下:(1)File getFilesDir ():获取 /data/data/<包名>/files 目录;(2)FileInputStream openFileInput (String name):打...原创 2018-09-26 16:01:52 · 169 阅读 · 0 评论 -
Android入门笔记(十)
十、缩放和显示位图 10.1 为什么要缩放 一般来说,当我们需要加载图片给用户显示的时候,在技术上,需要加载图片到大小合适的 Bitmap 对象中,而 Bitmap 是个简单的对象,它只存储实际的像素数据,即使原始照片已经压缩过,但存入 Bitmap 对象时,文件并不会同样压缩,这样就需要我们对 Bitmap 进行一个大小合适的选择。 10.2 缩放操作(1)首...原创 2018-09-26 18:10:04 · 126 阅读 · 0 评论 -
Android入门笔记(一)
一、UI fragment 1.1 为什么要使用 fragment 和对托管的相关理解 为了对组件进行更加灵活的控制,同时适应平板的大屏幕布局方式,所以引入 UI fragment 来对 UI 进行管理。fragment 类的作用与普通项目中的 avtivity 作用相同,都是负责创建并管理用户界面,以及与模型界面进行交互。activity 对 fragmen...原创 2018-09-22 20:57:49 · 329 阅读 · 0 评论 -
Android入门笔记(十一)
十一、数据绑定 与 MVVM 11.1 MVC之前我们所使用的都是 MVC 架构,即组成为:M - model 模型层:主要用来作为数据的 ORM 映射,将数据转化为对象的形式来进行处理;V - view 视图层:主要的作用是用于页面的视图显示,比如于 layout 中的 xml 类型的文件;C - controller 控制层:主要用于关联模型层和视图层,使数据能够填充视...原创 2018-09-27 21:09:54 · 218 阅读 · 0 评论 -
Android 去除默认点击水波纹效果
问题:今天在设置布局 ExpandableListView 之后发现存在和 TabLayout 一样的水波纹点击效果,但是按照需求我们应该删除它。解决方案:styles 中添加 <item name="android:colorControlHighlight">@android:color/transparent</item>即设置点击背景为透明即可...原创 2019-02-01 09:51:36 · 9961 阅读 · 1 评论 -
Android Studio 真机调试出现 Unable to instantiate activity ComponentInfo的解决方案
详细解决方案地址:https://blog.csdn.net/chjqxxxx/article/details/78180815问题:项目AVD调试的时候正常,当连接真机的时候出现以下错误: FATAL EXCEPTION: mainProcess: com.xxxxxxxxx.android, PID: 24099java.lang.RuntimeException: Un...原创 2019-01-28 18:46:34 · 1187 阅读 · 1 评论 -
Android TabLayout 去除点击水波纹效果
详细解决方案地址:https://blog.csdn.net/u010750160/article/details/84070371问题:当在开发工具里新建一个工程时,Android Studio会自动添加一个新的依赖库 appcompat_v7 或者 AS中会自动引用,并引用最新的主题样式Theme.AppCompat.Light,这样就会时所有的点击效果都自带 Material D...原创 2019-01-28 20:17:43 · 10366 阅读 · 5 评论 -
图表型安卓APP——智慧课堂移动端(附源码)
作者享有此项目的软件著作权,禁止他人将此项目作为商用或者用于参加比赛等!一、项目展示视频展示:https://www.bilibili.com/video/av45574063/二、项目背景这个项目的话是我今年的二月份开始做的一个项目,当时做这个项目的目的和去年二月份那个《移动会议实时互动系统》是相同的,也是为了参加全国大学生服务外包大赛而准备的。整个项目的开发大概经历了两三个...原创 2019-07-05 11:10:42 · 1443 阅读 · 0 评论