android
文章平均质量分 73
胖哥哥飘过
这个作者很懒,什么都没留下…
展开
-
谷歌电子市场开发记录(1)-开发前的准备
从今天开始,我将尝试开发“谷歌电子市场”这个app,这个APP大体样式和市面上的一些下载软件(豌豆荚,百度助手等)相似,有一些困难,对于我这个开发菜鸟来说是一个考验。好了,闲话不多提,开始正文。项目一开始,首先要解决的就是导入外部库的问题,这个项目使用了v7-appcompat外部库文件,因为要使用android自带的actionbar,也就是标题栏,v7-appcompat包可以兼容它,之前原创 2017-07-11 21:36:36 · 246 阅读 · 0 评论 -
谷歌电子市场开发记录(2)-框架搭建
上一篇博客说了开发前的准备工作,现在就要开始正式开发了。在项目开发时,难免需要使用到常用的一些对象,比如说Context上下文,经常需要使用,因此,此处,可以新建一个全局的Application,将常用的一些对象先new好,以便以后直接调用。1.新建一个GlobalApplication类,继承Application,实现OnCreate()方法,在这个类中,需要初始化三个对象。(1)原创 2017-07-11 23:05:18 · 328 阅读 · 0 评论 -
谷歌电子市场开发流程(3)-关于加载界面的处理
上一篇说到谷歌电子市场app的大体框架,重点是怎样填充viewpager,我们使用了一个个Fragment去作为页面的载体,这篇我们将怎样在Fragment中初始化页面。我们知道,Fragment只是一个View的载体,也就是说View是显示在Fragment中,所以,初始化一个Fragment需要实现onCreateView()方法,返回的View就是显示在Fragment中的页面,因此,我原创 2017-07-12 02:25:26 · 278 阅读 · 0 评论 -
谷歌电子市场开发流程(4)-listview的两层封装
上篇讲到页面的加载初始化,当完成之后会发现每一个代表子标签页的Fragment都需要实现两种方法,onCreateSuccessPage()和onLoad(),其中onCreateSuccessPage()方法是决定在加载成功时Fragment该显示什么,而onLoad()方法则是在请求数据,并将返回的网络状态传递给LoadingPage类,让LoadingPage来决定该选择什么界面加载。当原创 2017-07-12 15:19:33 · 252 阅读 · 0 评论 -
谷歌电子市场开发流程(5)-关于加载更多页面的处理
上篇是对ListView进行了封装处理,这一篇主要是记录在开发中学到的一些开发经验。1.根据需求,ListView中的Item常常不止一种,如果要加载多种Item,只需要重写BaseAdapter中的getItemType()和getViewTypeCount()两个方法。(1)getViewTypeCount()方法是得到Item种类的个数,就是,你想要加载几种布局,将种类个数告诉它。原创 2017-07-13 01:49:23 · 208 阅读 · 0 评论 -
谷歌电子市场开发流程(6)-xutils的使用
昨天没有更新博客,因为调bug调了太长时间,因为封装的问题,逻辑显得很复杂,跟着断点调了很多次,最后才找到问题,顿时觉得身心俱疲,博客也就没有心思去更新了,好了,牢骚发完了,那就赶紧开始吧。。。昨天将网络架构基本上搭建完了,一旦框架搭好,后面的填充数据就会显得异常容易。个人认为呢,android主要是以显示数据为主的,怎样将具体的数据,转换为用户看的懂得图像,文字,是最重要的,当然,美观也占了原创 2017-07-15 00:17:22 · 284 阅读 · 0 评论 -
谷歌电子市场开发流程(6)-xutils的使用
最近搜了一些框架供初学者学习比较了一下XUtils是目前git上比较活跃 功能比较完善的一个框架是基于afinal开发的比afinal稳定性提高了不少下面是介绍xUtils简介使用xUtils快速开发框架需要有以下权限混淆时注意事项DbUtils使用方法ViewUtils使用方法HttpUtils使用方法普通get方法使用HttpUtils上传文件 或者 提交数据 到服务器post方法使用转载 2017-07-15 02:13:31 · 276 阅读 · 0 评论 -
谷歌电子市场开发流程(8)-自定义控件
在android开发中,有很多时候使用系统自带的控件很难达到我们想要呈现给用户的效果,举个例子来说,我们知道,如果要将图片填充在整个ImageView中,可以使用fixXY,centercrop和fitcenter三个属性,其中fitXY可能将图片进行缩放或者拉伸,会使图片失真,而centercrop和fitcenter则可能会进行裁剪,都不是我们想要得到的效果,我们需要的是,将图片完整呈现在Im原创 2017-07-15 02:32:10 · 297 阅读 · 0 评论 -
谷歌电子市场开发流程(9)-线程,线程池
我们都知道,当一个项目中要实现多项下载任务时,如果遇到一个下载任务就new一个Thread,不仅会让项目本身运行效率变慢,而且可能会带来线程安全的问题,导致一些难以觉察的bug。那么运用面向对象的思想,我们可以猜想,可不可以用一个类来统一管理项目中所有的线程呢?java中提供了线程池的概念,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是原创 2017-07-19 20:02:28 · 403 阅读 · 0 评论 -
谷歌电子市场开发流程(10)-回调与观察者模式
在Android中,或者说Java中,监听模式都是非常常见的。当你激发某个事件,常常你需要等待这个事件的返回。如果这个事件是个异步事件,那么监听总是显得很有必要。举个日常的例子,当你在android中连接网络并发送请求时,你就常常需要用到异步监听,用于监听并回调请求结果。这个就是异步回调。观察者模式与回调模式有很多的相似处,简单对比就是:回调是一对一的关系,只监听一个事件;观察者模式则原创 2017-07-21 02:46:34 · 447 阅读 · 0 评论 -
自定义表情输入键盘
最近,在项目中集成了环信的即时通讯,其中使用到了他的easeUI库,这里集成了一些聊天界面和联系人界面,出于好奇,我便去看了看其中的代码,发现比较复杂,于是想自己做一个表情输入的键盘,easeui项目中的国语复杂,所以我先找了一个比较简单的项目来练手。项目github地址:https://github.com/shinezejian/emotionkeyboard/blob/master/src/原创 2017-10-17 14:47:24 · 388 阅读 · 0 评论 -
android RecycleView的使用
最近在开发项目时,使用到了RecycleView,感受到了它的强大功能,因此,想写篇博客来与大家分享!首先,我想说其实Recycleview实现的功能使用ListView和GridView其实也可以实现,但是的确Recycleview方便不少,想来也是google封装的更好了。先讲一讲怎样在android studio中使用RecycleView,首先必须使用com.android.sup原创 2017-10-02 20:33:54 · 569 阅读 · 0 评论 -
android打造酷炫自定义ProgressBar
自定义控件分三步:1.自定义属性的声明:(1)找到value文件夹,新建一个名为attrs的xml文件:由图可以看出:需要打造的水平进度条的progressbar需要有哪些自定义属性呢?基本需要七个属性:a.左边已完成的进度reachbar需要高度reachbarheightb.左边已完成的进度reachbar需要颜色reachbarcolorc.中间的文字需要大小te原创 2017-10-10 14:27:19 · 1277 阅读 · 0 评论 -
高仿微信-微信EM开发流程--(1)项目介绍
最近在仿照微信页面和功能开发一个项目,大致功能都已实现,整个项目走下来,遇上过不少坑,特此来记录总结一下。首先,先讲一下整个项目的大致架构。 (1)登录注册功能微信的登录注册界面没有花哨的动画和布局,就是简简单单的一个普通的界面,实现起来也比较简单,但是其中也有一些值得提一下的东西。 a.原创 2017-12-10 16:53:15 · 1724 阅读 · 0 评论 -
高仿微信-微信EM开发流程--(2)自定义对话框
在开发项目中,经常遇到这种提示性的对话框,当时系统自有提供的对话框就显得太不美观了。所以,为了界面的美观,也为了代码的简洁性,可以自己封装一个(1)首先分析对话框的整体样式,可以看到,对话框有很多样式,底部按钮数量都不确定,但是都有一个共同的特点,就是外部总体样式是相同的,只不过,标题与提示文字,还有按钮不一样,记得在我的前几篇博客说过,有共同点的话,那么就先抽取他们的共同点,不同点的话就原创 2017-12-14 11:26:40 · 499 阅读 · 0 评论 -
高仿微信-微信EM开发流程--(3)Android6.0动态权限申请
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限. 时代总是不断发展, 程序总是以人为本, 让我们为应用添加动态权限管理吧! 这里提供了一个非常不错的解决方案, 提供源码, 项目可以直接使用./** * Created by z原创 2017-12-14 18:05:25 · 265 阅读 · 0 评论 -
RxJava2+Retrofit2+okHttp的二次封装
项目Demo已经上传至github链接本人android小白一枚,在学习android的过程中,我感受很深,在做了这么多练手的项目之后,我觉得android就像一块画板,画板是白纸,作为android的开发人员,要做的就是运用一切可能,去在画板上画出让人看的懂并且美观的画。说起来,我们却也属于艺术家这一行了。。。在我看来,android是为了展示数据的,这里就要分两个步骤了,第一就是怎样去展示,这...原创 2018-01-20 22:14:49 · 11761 阅读 · 7 评论 -
各类android动画特效收集
https://www.cnblogs.com/ldq2016/p/5217590.html原创 2018-01-30 15:15:23 · 2852 阅读 · 0 评论 -
Android面试题(22)-lruCache与DiskLruCache缓存详解
关于lruCache(最近最少使用)的算法,这是一个比较重要的算法,它的应用非常广泛,不仅仅在Android中使用,Linux系统等其他地方中也有使用;今天就来看一看这其中的奥秘;讲到LruCache,就不得不讲一讲LinkedHashMap,而对于LinkedHashMap,它继承的是HashMap,那么我们就先从HashMap开始看起吧;注:此篇博客所讲的所有知识都是在jdk1.8环境下的,j...原创 2018-03-06 22:24:38 · 9869 阅读 · 0 评论 -
Android面试题(23)-图片的三级缓存工具类
上一篇博客已经把三级缓存原理大致都讲了,这篇博客就仅仅贴一下封装好的一个图片三级缓存工具类,代码内有注释,仅仅小记一下:首先是MyBitmapUtils,它提供了一个display方法去供外界调用:/** * 图片三级缓存工具类 * Created by PDD on 2018/3/6. */public class MyBitmapUtils { private NetWor...原创 2018-03-06 22:35:19 · 824 阅读 · 0 评论 -
Android面试题(24)-有关bitmap的操作
有关bitmap的操作一直很多,这里特此总结一下:public class BitmapTransformUtils { //根据图片uri生成Bitmap对象 public static Bitmap getBitmapByUrl(Context context, Uri uri) { if (uri == null) return nu...原创 2018-03-06 23:39:52 · 796 阅读 · 0 评论 -
Android面试题(25)-Bundle机制
Bundle的概念理解Bundle对于Android开发者来说肯定非常眼熟,它经常出现在以下场合:Activity状态数据的保存与恢复涉及到的两个回调:void onSaveInstanceState (Bundle outState)、void onCreate (Bundle savedInstanceState)Fragment的setArguments方法:void setArgument...原创 2018-03-07 11:52:38 · 6199 阅读 · 1 评论 -
Android面试题(26)-有关SharePreference的多进程
在使用SharedPreference 时,有如下一些模式:MODE_PRIVATE 私有模式,这是最常见的模式,一般情况下都使用该模式。 MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE ,文件开放读写权限,不安全,已经被废弃了,google建议使用FileProvider共享文件。MODE_MULTI_PROCESS,跨进程模式,如果项目有多个进程使用同一个P...原创 2018-03-07 12:28:04 · 1219 阅读 · 0 评论 -
android面试(2)-Activity篇
今天正式开始Android篇的面试题,先从最熟悉的总结吧。Activity我相信只要学过Android开发的接触最多的就是这个组件了吧,Android四大组件的头牌,得好好说道说道。提到Activity,涉及的东西真的还挺多,什么生命周期啊,启动模式啊,进程优先级啊,别着急,一个一个来。1.概念:Android开发中提供给用户进行滑动触摸等操作的界面。2.Activity四种状态:(1)runni...原创 2018-02-27 15:52:43 · 901 阅读 · 0 评论 -
Android面试题(27)-android的事件分发机制
今天开始写一点关于view的知识,先从最基本的讲吧,android的事件分发机制,其实在我看来,android的事件分发机制在现实生活中经常能看到,所以我觉得还是很好理解的;先看看生活中常见的一种情形吧;比如说,现在你所在的公司中有一项任务被派发下来了,项目经理把项目交给你的老大,你的老大老大手下有很多人,看了看觉得你做很合适,把这个任务交给你了;你一看觉得还行,你就接下来了;这么一个小小场景大概...原创 2018-03-07 16:40:21 · 13859 阅读 · 6 评论 -
android面试(3)-Service篇
今天聊一聊Service。Service是Android里的计算型组件,它是Android中四大组件之一。提到Service,不得不说的就是它的两种启动方式了,不着急,还是一步一步来。1.概念:Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。2.生命周期:Service对象不能自己启动,需要通过某个A...原创 2018-02-27 17:42:03 · 723 阅读 · 0 评论 -
android面试(4)-Broadcast广播篇
咱们继续,今天复习一下Broadcast广播的相关知识,老步骤,一步步来。1.概念:Broadcast是一种广泛运用于应用程序之间传输信息的机制。从本质上来说,广播内容就是一个Intent,在Intent中携带数据。2.使用场景:(1)同一个App内具有多个进程的不同组件之间的消息通信(2)不同App内的通信3.种类:(1)普通广播:Context.sendBroadc...原创 2018-02-27 21:29:17 · 1849 阅读 · 1 评论 -
android面试(5)-WebView安全漏洞
WebView是android提供的一个非常强大的控件,具体的怎样去使用网上有很多教程,在这里就不多讲,我今天只讲讲使用WebView要注意的一些问题;1.常见的一些坑:(1)Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确闲置使用WebView.addJavascriptInterface()方法,远程攻击者可通过使用反射机制利用该漏洞执行任...原创 2018-02-27 22:01:04 · 704 阅读 · 0 评论 -
android面试(6)-Binder机制
一直说,要写一篇关于Binder的详解,今天终于发福利了~说到Binder,真的是头大,因为它涉及到的知识点实在是太多,所以在这里,我不准备总结太底层的东西,原因嘛,就是因为我也还没搞清楚,哈哈~~;好了,言归正传,要想了解Binder,首先得了解一些Linux内核的基础知识:1.Linux内核基础知识:(1)用户空间/内核空间:一切从简,用户空间指的是用户程序所运行的空间,内核空间是 Linux...原创 2018-02-27 23:09:43 · 7268 阅读 · 1 评论 -
Android面试题(28)-android的view加载和绘制流程
View的加载流程view布局一直贯穿于整个android应用中,不管是activity还是fragment都给我们提供了一个view依附的对象,关于view的加载我们在开发中一直使用,在接下来的几篇文章中将介绍在android中的加载机制和绘制流程并且对于基于android6.0的源码进行分析探讨。这一部分先来分析一下activity中view的加载流程。当我们打开activity时候,...原创 2018-03-08 13:36:03 · 7636 阅读 · 2 评论 -
android面试(7)-handler机制
今天开始复习Android的异步消息处理机制,我们先从最熟悉的Handler讲起,还是老套路,一步一步来吧。1.概念Android的消息机制的上层接口,通过发送和处理Message和Runnable对象来关联相对应的的线程MessageQueue;(1)可以让对应的Message和Runnable在未来的某个时间点进行相应处理(2)让自己想要处理的耗时操作放在子线程,让更新UI的操作放在主线程;2...原创 2018-02-28 17:08:32 · 2637 阅读 · 0 评论 -
android面试(8)-AsyncTask
今天讲一讲AsyncTask的基本知识。1.概念:AsyncTask是Android提供的轻量级的异步类,本质上就是一个封装了线程池和handler的异步框架;2.使用方法(1)三个参数 (A)Params:参数的类型; (B)Progress:后台任务执行进度的类型 (C)Result:后台任务的返回结果的类型(2)五个方法 (A)onPreExc...原创 2018-02-28 17:53:09 · 507 阅读 · 0 评论 -
android面试(9)-handlerThread机制
今天继续异步消息机制,复习一下handlerThread;1.产生背景:我们知道,在Android开发中,我们经常会遇到耗时操作,最常见的就是网络访问,这时候,我们通常都会开启一个新的线程来进行耗时任务,非常方便,但是却也非常消耗性能,因为耗时操作可能会有多个,当你这个耗时操作完成之后,线程被销毁,新的耗时任务又来了,你又需要去创建线程,所以,多次的创建和销毁线程是非常消耗性能的,在之前的hand...原创 2018-02-28 19:19:52 · 744 阅读 · 0 评论 -
Android面试题(29)-surfaceView与TextureView
SurfaceView:模板代码:public class SurfaceViewText extends SurfaceView implements SurfaceHolder.Callback,Runnable{ private SurfaceHolder surfaceHolder; private boolean isDrawing; public Surfac...原创 2018-03-08 16:50:02 · 1827 阅读 · 0 评论 -
Android面试题(30)-RecycleView和ListView
一、两者的缓存机制上的区别 先来说一样的地方,ListView与RecyclerView缓存机制原理大致一样,滑动的时候,离开屏幕的ItemView被回收到缓存,新的itemView加在优先获取的缓存中的,这是正常的两种类似的缓存机制。 而不同的地方在于,两者的缓存层级不同,ListView只有两层,RecycleView有四级缓存。 1. mActiveViews和mAttac...原创 2018-03-08 17:46:05 · 6106 阅读 · 1 评论 -
android面试(10)-IntentService
1.概念:IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们手动去控制或者stopSelf()。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentSe...原创 2018-02-28 20:09:23 · 520 阅读 · 0 评论 -
android面试(11)-Volley
忙活了半天,终于把异步消息处理机制差不多都介绍完了,赶紧趁热打铁,从今天开始,就开始复习一些市面上比较有名的开源框架,每个开源框架大致都分为两步来说道说道,先谈一下怎么使用,会有代码实例,其次在讲一下关于源码的分析,好了,话不多说,现在就开始吧。今天先讲Volley,volley是google推出的异步加载的一个网络框架,功能很强大,它适合那些数据量小的但是需要频繁去获取的情况。1.简单使用:(1...原创 2018-02-28 21:15:31 · 557 阅读 · 0 评论 -
android面试(12)-Okhttp
可以说,okhttp非常的火,火了好几年了,虽然现如今比较火的网络框架是retrofit,但是,retrofit内部其实也是用了okhttp;1.使用方法:(1)创建一个请求客户端okhttpClient对象(2)创建一个请求Request对象,通过Build模式创建(3)创建一个实际的http请求call对象,它可以调用execute(同步获取数据),也可以调用enqueue(异步获取数据);p...原创 2018-02-28 22:21:11 · 4283 阅读 · 0 评论 -
Android面试题(31)-App启动流程
先贴个链接,总结的挺全面在看这篇文章之前,希望先看完我的之前的博客 android面试(6)-Binder机制,因为关于App启动流程设计很多Binder通信;先将“三个进程”,“六个大类”进行介绍:三个进程:Launcher进程:整个App启动流程的起点,负责接收用户点击屏幕事件,它其实就是一个Activity,里面实现了点击事件,长按事件,触摸等事件,可以这么理解,把Launc...原创 2018-03-08 23:43:59 · 10669 阅读 · 1 评论 -
android面试(13)-retrofit
retrofit可以说是如今市面上最火的网络框架,最常用的大概就是retrofit+RxJava+okhttp框架,结合MVP设计模式的经典应用了吧,今天我们只讲retrofit,上一篇已经说过,retrofit的内部其实也是使用了okhttp的1.使用方法:(1)创建一个接口作为http请求的api接口public interface Api { @GET("repos/{owner}...原创 2018-02-28 23:10:52 · 2944 阅读 · 1 评论