android
范二er
这个作者很懒,什么都没留下…
展开
-
SQLite IllegalStateException 的隐蔽 bug 修复
摘要:java.lang.IllegalStateException: Couldn’t read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.发生场景:查询数据库报错日志如下: java.l原创 2018-01-20 14:35:45 · 634 阅读 · 0 评论 -
总结:Android中的线程,线程池相关(二)---线程池
前言在上一篇中记录了线程的基本使用以及线程生命周期.这篇记录线程池.在操作系统中,线程是操作系统调度的最小单元,同事线程又是一种受限的系统资源,即线程不能无限制地产生,并且线程的创建和销毁都有一定的开销.当系统中存在大量的线程时,系统会通过时间轮转片的方式调度每一个线程,因此线程不可能做到绝对的秉性,除非线程数量小于等于CPU的核心数,一般来说这是不可能的.试想一下,如果在一个线程中频繁的创建和销毁原创 2016-10-14 16:03:48 · 497 阅读 · 0 评论 -
style、theme的关系与使用
第1节 概述主题theme与风格style是两个很相近的概念,经常把它们混乱着称呼。它们都定义在xml文件中,都使用style标签。主题与风格是包含与被包含的关系。例如同一个主题中,按钮使用一种风格,进度条使用一种风格。可以说主题是由具备各种风格的组件组合起来的。从下面定义的主题例子中,我们可以看到这个主题里面的文字,使用的是TextAppearance.Devic转载 2016-09-05 20:53:50 · 709 阅读 · 0 评论 -
Android总结--SQLite
一.创建数据库1.SQLiteOpenHelper是一个抽象类,我们要创建自己的类去继承他。SQLiteOpenHelper有两个抽象方法,分别是onCreate(),onUpgrade() ,我们需要在自己的帮助类里重写这两个方法,然后分别在这两个方法中去创建,升级数据库的逻辑2.SQLiteOpenHelper还有两个非常重要的实例方法,getReadableDatabase(),getWrit原创 2016-06-19 09:08:42 · 651 阅读 · 0 评论 -
Android---封装ListView的Adapter
前言在一个项目里,如果ListView是经常用到的,我们可以选择对ListView进行封装,封装过后的ListView,在写Adapter的时候,可以省事很多.下面记录没有封装之前的ListView写法,和封装之后的写法.没有封装之前的ListViewclass HomeAdapter extends Base adapter{ @Override public int ge原创 2016-07-21 10:40:20 · 1808 阅读 · 2 评论 -
AndroidStudio 快捷使用
前面的话Android Studio 提供了一个非常方便的功能帮助我们导入或者导出设置。因此我们在安装一个新的 Android Studio 的时候通常会导入一个之前的设置。但是,最近发生了一件悲剧的事情-我丢失了我的设置文件(幸灾乐祸点个赞~)。我的建议:即时的备份你的设置文件到云盘等地方。当我在配置我的 Android Studio 的时候,下面的一些配置技巧或许对原创 2016-06-20 19:23:56 · 551 阅读 · 1 评论 -
android--创建桌面快捷方式
Android app 生成快捷方式原创 2016-06-23 11:27:00 · 1019 阅读 · 0 评论 -
Android---可以实现下拉刷新的ListView
1.效果 这个效果在很多App里都可以用到,基本上就已经泛滥了.这里就记录一下如何实现这一种效果.(截图没注意大小,丢帧也严重,所以看上去有点卡顿)2.实现步骤2.1布局文件 首先要明确的是,这一块也是一个布局文件,我们首先写出这个layout,代码比较简单,就不做说明了:pull_to_refesh.xml<?xml version="1.0" encoding="utf-8"?><Li原创 2016-07-12 16:28:57 · 2074 阅读 · 0 评论 -
ViewPagerIndicator使用流程记录
ViewPagerIndicator使用流程:1.引入库文件;2.在需要用到ViewPagerIndicator的布局文件中增加3.在Pager中拿到2中的控件mIndicator;4.mIndicator.setViewPager()将ViewPager和指示器绑定在一起 必须在ViewPager设置完数据之后再绑定;5.在Pa原创 2016-07-19 09:16:03 · 590 阅读 · 0 评论 -
总结:Android中的线程,线程池相关(一)---线程
前言把一个相对耗时且数据操作复杂的任务分割成多个小的操作,然后分别运行在多个线程上,这能够提高完成任务的速度和效率。在多核CPU的设备上,系统可以并行运行多个线程,而不需要让每个子操作等待CPU的时间片切换。例如,如果要解码大量的图片文件并以缩略图的形式把图片显示在屏幕上,当你把每个解码操作单独用一个线程去执行时,会发现速度快了很多。 本篇博客总结本人在Android学习中所遇到的线程相关问题.一原创 2016-10-13 15:41:08 · 926 阅读 · 0 评论 -
AsyncTask浅析
前言从去年秋招到今年的春招,最后确定工作单位,可真是忙忙碌碌的一年,在时间跨度一年的找工作中,自己收获还是挺多的,本来想在毕业前夕,想写点什么东西纪念下这段时光的,但是可能还是因为自己道行不够吧,始终不能很好的记录下大学四年和一年的求职之路,所以此处还是暂时跳过。希望能在毕业一年后,再好好总结。 目前已经到上海来了,下周一就正式入职,充满了未知和挑战,自己还是挺兴奋的,趁这几天有时间,先复习一下一原创 2017-07-01 15:39:22 · 396 阅读 · 0 评论 -
Android官方TODO-MVP项目分析(上)---View 层 Presenter 层以及 Contract 分析
摘要:最近看了一下 google 官方的 sample ,做的是一个 TODO 应用,使用的是 MVP 模式,之前笔者也学习了一段时间的 MVP,前面写了几篇文章记录学习过程,也有一些思考,最后呈现出来的问题就是 Presenter 层臃肿问题,以及 View 层接口难以管理的问题。比方说 View 层,它是负责 UI 的更新工作,我们希望它里面都是 showXXXZZZ(@Nullable Par原创 2017-11-14 09:52:38 · 2165 阅读 · 0 评论 -
Android中的Window、WindowManager以及悬浮框视频播放的实现
摘要:近日看公司直播项目,其中有一个功能就是退出某房间之后,直播界面会以悬浮窗的形式出现,并且可以拖动悬浮窗到界面中任意位置,点击悬浮框之后,又可以回到房间中继续观看直播。现在这个功能在主流的直播或者视频类软件中都可以看到,比如:某鱼、某猫、某珠、某牙、某tube。当然了,某tobe当中的悬浮窗效果更佳炫酷,可以炫酷地从悬浮框中将视频主界面慢慢拖动出来,具体效果下载某tube就能看到。这篇文章就记原创 2018-01-20 14:32:24 · 8506 阅读 · 3 评论 -
View 的工作流程---结合HenCoder教程和《Android开发艺术探索》的总结
摘要:一直关注 Hencoder 的教程,前阵子刚好出了一期 View 的工作流程系列,然后结合《Android开发艺术探索》相关章节,做一下笔记。原文发表于本人的个人博客—–记录一个刚入职场的新人的学习过程申明:文中 draw过程 这一小节,是摘抄自 HenCoder Android 开发进阶:自定义 View 1-5 绘制顺序 ,详细内容请点击链接查看。MeasureSpecMeasureSp原创 2017-11-25 13:25:30 · 773 阅读 · 0 评论 -
Android当中的MVP模式(一)基本概念
Android当中的MVP模式(一)基本概念1. 为什么要使用MVP在传统的Android开发中,我们一般是使用MVC模式进行开发的。1.1 传统MVC模式介绍:View: 视图层,对应xml文件Controller: 控制层,对应Activity和Fragment层,进行数据处理Model:实体层,负责获取实体数据采用MVC模式的一个最大的弊端就是xml作为View层视图能力实在太弱,所以原创 2017-11-05 20:46:42 · 455 阅读 · 0 评论 -
Android 当中的 MVP 模式(二)封装
Android 当中的 MVP 模式(二)封装个人博客地址 :CODER FRAMER BIGZ在Android当中的MVP模式(一)基本概念中,用了一个简单的的登录Demo展示了一下 MVP 模式的基本姿势,虽然项目结构是更加清晰了,但是代码量明显增多了,原来的网络请求操作只用 1 个类可以搞定,现在需要 4 个类,并且每当有不同作用的 model 出现时,我们就需要相应的为他们添加 presen原创 2017-11-05 20:47:54 · 572 阅读 · 1 评论 -
Android当中的MVP模式(三)基于分页列表的封装
摘要:在上一篇中对MVP模式进行了封装,然后通过封装之后的类,实现了一个网络请求,但是请求到网络数据之后,就直接展示到了 View 层,并没有其他的操作,然而我们在开发过程中, 经常会用到分页加载,一般在滑动控件向上滚动,加载更多事件触发是调用,并且这个过程设计到两个参数,一个是 PageIndex :页码;一个是 PageSize 一页数据的大小, 分页加载就是通过在某一具体事件触发时,调用修改这原创 2017-11-05 20:48:47 · 1668 阅读 · 0 评论 -
Android当中的MVP模式(四)插曲-封装OkHttp
个人博客地址 :CODER FRAMER BIGZ摘要:前两篇中使用的网络请求工具是 OkHttp ,并没有经过封装,都是简单的使用 get 请求,并且将错误全部都抛到上层去解决了, 这无形之中增加了上层的编码复杂度,即使要抛向上层,起码也要给一个 errorCode 或者是 errorMsg 吧,所以这边文章就针对 OkHttp 进行封装,然后将封装之后的工具使用到上一小结的 Demo 之中。原创 2017-11-05 20:49:29 · 497 阅读 · 0 评论 -
Android当中的MVP模式(五)封装之后的OkHttp工具在Model层
个人博客地址 :CODER FRAMER BIGZ摘要:在上一篇中对 OkHttp 进行了简单的封装,但是没有使用到这个系列当中的 Demo 里面,这一章就使用上一篇封装的 OkHttp 工具,替换掉之前 Demo 里面的 Model 层的网络请求.并且之前的部分接口方法都没有使用,比如说 IBasePresenter 接口中的 HashMap<String, String> getParams()原创 2017-11-05 20:50:09 · 1055 阅读 · 0 评论 -
Android当中的MVP模式(六)View 层 Activity 的基类--- BaseMvpActivity 的封装
个人博客地址 :CODER FRAMER BIGZ摘要:使用封装之后的 MVP 模式实现一个新的界面,也就是 View 层,那么就需要去实现 IBaseView 接口,可能还需要针对当前要实现的界面情况,在 IBaseView 的基础之上派生出一个新的接口 IXxxView,之前的 SohuAlbumInfoActivity 用于展示搜狐电视剧主要信息的 View 就是这种情况,由 IBaseVie原创 2017-11-05 20:50:48 · 3441 阅读 · 0 评论 -
Android---记录项目中创建线程池的代码
当app使用到大量的线程操作的时候,我们不仅要考虑线程的安全问题,还需要考虑线程的数量对性能的影响的问题. 这个时候我们可以借助Java的线程池,在一定的程度上可以缓解这种情况. 下面贴出代码:/** * 线程管理器 * Created by zfy on 2016/7/27. */public class ThreadManager { private static Thread原创 2016-07-27 10:09:17 · 411 阅读 · 0 评论 -
Android---程序锁(2)业务逻辑
一.写在前面的话终于,所有的考试都考完了,可以安安心心的敲敲代码了。上次记录程序锁只是搭建了一个界面,具体的业务逻辑还没有实现,然后昨晚看了视频之后,自己也敲了一遍代码,所以今天就抽个空记录一下。推荐黑马74期视频,确实很不错。老师们都讲的很详细。二 总体思路和问题思路:1.程序锁是功能要时时刻刻对我们开启的应用进行监听,它是脱离Activity的存在,所以根据这一需求,我们可以将业务逻辑写在Ser原创 2016-07-01 09:16:37 · 1107 阅读 · 0 评论 -
Android菜单详解(五)——使用XML生成菜单
回顾前面的几篇,我们都是直接在代码中添加菜单项,给菜单项分组等,这是比较传统的做法,它存在着一些不足。比如说,为了响应每个菜单项,我们需要用常量来保存每个菜单项的ID等。为此,Android提供了一种更好的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。这一篇就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步:转载 2016-05-28 16:40:33 · 664 阅读 · 0 评论 -
Android菜单详解(四)——使用上下文菜单ContextMenu
之前在《Android菜单详解(二)——创建并响应选项菜单》和《Android菜单详解(三)——SubMenu和IconMenu》中详细讲解了选项菜单,子菜单和图标菜单。今天接着细说另一种被广泛使用的菜单——上下文菜单Context Menu。ContextMenu简介在Windows中,我们已经习惯了在文件上单击右键来执行“打开”、“重名名”、“剪切”、“删除”等操作,这个右转载 2016-05-28 16:39:49 · 4473 阅读 · 0 评论 -
Android菜单详解(三)——SubMenu和IconMenu
我们在上一篇介绍了如何在Android中创建和响应选项菜单,今天我们将探索子菜单和图标菜单。子菜单Sub Menu 子菜单提供了一种自然的组织菜单项的方式,它被大量地运用在windows和其他OS的GUI设计中。Android同样支持子菜单,你可以通过addSubMenu(int groupId, int itemId, int order, int titleRes)转载 2016-05-28 16:38:58 · 608 阅读 · 0 评论 -
Android菜单详解(二)——创建并响应选项菜单
创建options menu之前提到,Android的activity已经为我们提前创建好了android.view.Menu对象,并提供了回调方法onCreateOptionsMenu(Menu menu)供我们初始化菜单的内容。该方法只会在选项菜单第一次显示的时候被执行,如果你需要动态改变选项菜单的内容,请使用 onPrepareOptionsMenu(Menu)。转载 2016-05-28 16:37:07 · 557 阅读 · 0 评论 -
Android菜单详解(一)——理解android中的Menu
理解Android的菜单菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机甚至都要有一个"Menu"键,由此可见菜单在Android程序中的特殊性。Android SDK提供的菜单有如下几种:选项菜单:最常规的菜单,android中把它叫做option menu子菜单:android中点击子菜单将弹出悬浮窗口显示子菜单项。子菜单不支持嵌套转载 2016-05-28 16:32:44 · 624 阅读 · 0 评论 -
Android网络之数据解析----SAX方式解析XML数据
【正文】一、XML和Json数据的引入:通常情况下,每个需要访问网络的应用程序都会有一个自己的服务器,我们可以向服务器提交数据,也可以从服务器获取数据。不过这个时候就有一个问题,这些数据是以什么格式在网络上传输的呢?一般我们都会在网络上传输一些格式化后的数据,这种数据会有一定的结构规格和语言,当另一方受到数据消息后就可以按照相同的结构规格进行解析,从而取出它想要的那部分内容。转载 2016-04-19 21:19:50 · 362 阅读 · 0 评论 -
Android系列之网络(二)----HTTP请求头与响应头
【正文】国庆佳节,习惯并享受着一个人独霸整个教研室的感觉。在上一篇文章中,我们学习到了如何使用HttpClient发送HTTP请求。博文链接:Android系列之网络(一)----使用HttpClient发送HTTP请求本篇文章中,将学习一下HTTP请求头与响应头的知识。一、HTTP头引入:正确的设置HTTP头部信息有助于搜索引擎判断网页及提升网站访转载 2016-04-19 21:18:12 · 650 阅读 · 0 评论 -
Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
【正文】 一、HTTP协议初探:HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Internet上目前使用最广泛的应用层协议,它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。这几个名词有一种通俗的解释:通讯协议:双方对话的标准通用转载 2016-04-19 20:46:00 · 841 阅读 · 0 评论 -
Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
【正文】在前两篇文章中,我们学习到了和HTTP相关的基础知识。文章链接如下:Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)Android系列之网络(二)----HTTP请求头与响应头一、GET和POST的对比:在漫长的时间当中,其他的方法逐渐的退出了历史舞台,最常用的只剩下GET和POST方法。而之前转载 2016-04-19 21:18:48 · 695 阅读 · 0 评论 -
android---常驻悬浮框效果的实现
Android 常驻悬浮框 ListView Adapter原创 2016-06-24 11:25:59 · 3836 阅读 · 0 评论 -
BroadcastReceiver详解
学之广在于不倦,不倦在于固志。 ——晋·葛洪(学问的渊博在于学习时不知道厌倦,而学习不知厌倦在于有坚定的目标)一、概述BroadcastReceiver:直译是“广播接收者”,所以它的作用是用来接收发送过来的广播的。那我们有必要知道:什么是广播。广播,我的理解就是系统中消息的一种变种;就是当一个事件发生时,比如,系统突然断网,系统就发一个广播消转载 2016-05-21 19:28:18 · 1413 阅读 · 1 评论 -
Android---程序锁(1)展示页面的搭建
一.写在前面的话在日常使用手机的过程中,我们经常希望有这样一个功能:可以对我们的某一个应用加锁,进入的时候需要输入密码验证身份,然后才可以进入主界面,这就是一个程序锁的功能。其实这种功能并不难实现,正好在我最近跟着黑马74期视频敲的一个大的Demo里有这一块的内容,所以决定记录一下实现的方式。纯记录。。二.界面显示逻辑2.1界面效果图 2.2layout布局文件 这里我们将“未加锁”和“已加原创 2016-06-28 09:35:17 · 1934 阅读 · 0 评论 -
Android---引导界面的制作
一.概述在我们下载了一个App第一次进入的时候,或者是已有App更新之后第一次进入时,一般都会有一个引导界面,这个界面用于展示本App的基本功能,或者是更新之后版本的重大改进;效果图如下: 这里就简单的记录以下这个功能的实现;二.实现过程1.布局页面分析 布局代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/ap原创 2016-07-08 15:59:39 · 2113 阅读 · 0 评论 -
Android---用Genymotion模拟器连接不上10.0.2.2:8080
1.为什么Android原生模拟器可以使用10.0.2.2:8080访问到PC机的TomCat 这是Android的爹规定的!2.在Genymotion模拟器连接不上10.0.2.2:8080怎么解决follow me:step1:打开”设置”–>”WI-FI” step2:长按”WiredSSID”,点击”修改网络” setp3:注意图中红色方框处 step4:搞定! 3.你原创 2016-07-11 11:29:58 · 3376 阅读 · 1 评论 -
android---widgets的使用
Android widget原创 2016-06-25 21:52:40 · 4156 阅读 · 0 评论 -
基于Android平台的五子棋小游戏------AI篇
Android,AI算法原创 2016-06-03 20:40:04 · 5728 阅读 · 3 评论 -
Activity class {package/class} does not exist及Unable to start activity ComponentInfo 解决方法
写这篇随笔,我顶着很大的压力的,被看到定会引来一片鄙视。前思后想,为了警示以后不犯类似错误,最后一咬牙一狠心一跺脚,写出来共勉。 今天中午休息时间写的一个小练习,结果出现一下两种错误: (错误一)Activity class {package/class} does not exist(错误二)Unable to start activity ComponentInfo转载 2016-05-22 13:45:54 · 686 阅读 · 0 评论 -
Service详解
转载自http://blog.csdn.net/vipzjyno1/article/details/26004831。本人尊重原创作者的劳动成果!转载目的只作为本人归纳整理好的博文。不作为商业用途。如有侵权,请联系本人,本人将积极配合删除!转载 2016-05-22 10:40:21 · 729 阅读 · 0 评论