![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android基础
文章平均质量分 60
noonehide
一个开心的Android开发工程师
展开
-
Service与IntentService
Service:服务,四大组件之一,重要性不言而喻。 一:它有两种注册方法: 1.通过startServcie开启服务,并不与Service进行绑定2.通过bindService绑定服务,如果服务没有开启,则自动开启。bindService可以使activity与Service进行通信,通信的方法是在activity里创建一个ServiceConnection,里面获得Binder对象原创 2017-03-20 14:45:19 · 176 阅读 · 0 评论 -
Android5.X (四) : Material Design-动画效果
1.Ripple效果:点击控件后,产生波纹效果android:background = "?android:attr/selectableItemBackground"//波纹可以超出控件的边界android:background = "?android:attr/selectableItemBackgroundBorderless"原创 2015-12-24 16:52:07 · 346 阅读 · 0 评论 -
Android5.X (三) : CardView
CardView,这是谷歌自己提供控件,它继承了FrameLayout,所有FrameLayout的属性它都有;它有两个自己的属性:cardBackgroundColorcardCornerRadius各位读者使用的话需要在项目的gradle里进行配置然后就可以直接在xml里面进行引用啦 <android.support.v7.widg原创 2015-12-24 16:04:43 · 477 阅读 · 0 评论 -
Android5.X (二) : Material Design:对图像的操作!
Material Design原创 2015-12-24 15:19:44 · 378 阅读 · 0 评论 -
Android5.X (一) : Material Design
想要让界面更加富有时尚感 和视觉冲击力吗?那就来看Google的Material Design主题吧!想要让界面更加富有时尚感 和视觉冲击力吗?那就来看Google的Material Design主题吧! 目前有三种主题: android:Theme.Material.Light android:Theme.Material android:T原创 2015-12-24 14:08:49 · 533 阅读 · 0 评论 -
如何高效的加载大图,避免oom
1.设置inJustDecodeBounds 属性为true可以在解码的时候避免内存的分配,它会返回一个null的Bitmap但是可以获取宽高2.通过设置insampleSize,可以设置缩小的倍数mImageView.setImageBitmap( decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 10原创 2017-03-20 15:07:55 · 396 阅读 · 0 评论 -
Activity启动模式
1.standard:默认的启动模式,在这个模式下默认创建新的实例 2.singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。3.singleInstance:只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Act原创 2017-03-20 15:11:05 · 181 阅读 · 0 评论 -
activity和fragment生命周期
Activity生命周期: onCreate– onReStart(退回该activity的时候使用)–>onStart–>onResume–>onPause–>onStop–>onDestroy1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。2.当前Activity被其他Activity覆盖其上或被锁原创 2017-03-20 15:25:11 · 787 阅读 · 0 评论 -
解决Fragment嵌套问题
在使用add加载Fragment,并且使用show,hide来控制Fragment,如果没有相关恢复处理,在页面被强杀重启后,就会导致这多个Fragment都是show的形态显示,即多个布局叠加在Activity上 原理: app进入后台、屏幕旋转前、跳转下一个Activity,内存不足被强杀,app崩溃等时候,fragment走了onSaveInstance方法,它保存了`final class原创 2017-03-20 15:49:35 · 1287 阅读 · 0 评论 -
Handler机制详解
先上一张图 Handler里面主要的几个元素:Message,MessageQueue,Looper一. Handler的构造方法,会首先得到当前线程中保存的Looper实例,进而与Looper实例中的MessageQueue想关联。 Handler的sendMessage方法,会给msg的target赋值为handler自身,然后加入MessageQueue中。二. Looper主要是prep原创 2017-03-20 16:38:37 · 397 阅读 · 0 评论 -
Activity启动流程
要熟悉Activity启动流程,得首先知道以下几个概念 1.ActivityManagerService(AMS):服务端对象,负责系统中所有Activity的生命周期。服务端这个概念不仅仅存在于web项目很中,在Android系统中,ams,pms,wms等系统服务属于公共服务,我们的App通过调用startActivity()并不能直接打开另外一个App,这个方法会通过一系列的调用,最后还是告原创 2017-03-28 10:54:58 · 215 阅读 · 0 评论 -
RxJava入门篇
RxJava,它是一个响应式编程框架:意味着可以在编程语言中很方便地表达静态或动态的数据流。 基本概念: Observable:发射源,英文释义“可观察的”,在观察者模式中称为“被观察者”或“可观察对象”;Observer:接收源,英文释义“观察者”,没错!就是观察者模式中的“观察者”,可接收Observable、Subject发射的数据;Subject:Subject是一个比较特殊的对象,既可原创 2017-03-21 16:02:32 · 224 阅读 · 0 评论 -
RxJava-操作符
操作符是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件。 RxJava提供了很多很有用的操作符。 我们的观察者的作用是响应,那么数据的变换就要靠操作符来对观察者的Observable对象进行修改来实现了一.Map 特性: 1.它不必返回Observable对象返回的类型,你可以使用ma原创 2017-03-21 16:15:01 · 231 阅读 · 0 评论 -
Volley源码解析
volley,应该是Android开源框架中最简单的框架了,同时它也是最具有代表性的框架。如果你吃透了它,那么你看其他的开源框架也会容易很多。 先上图: 从上图中可以看出,Volley创建了RequestQueue,RequestQueue执行Cache和NetWork两个转发器, 最终执行ExecutorDelivery下面一步一步开始分析 1.Volley执行newRequestQu原创 2017-03-21 17:46:49 · 231 阅读 · 0 评论 -
Touch事件传递与滑动冲突解决方案
一.当一个触摸事件产生后,它的传递过程顺序如下:Activity -> Window -> DecorView,即事件总是先传递给Activity,Activity再传递给Window,最后Window再传递给顶层View DecorView;然后在不被拦截的情况下,触摸事件会被传递到触摸位置对应的最底层View。传递完成后就要处理触摸事件了,处理顺序是从最底层View向Activity进行的。跟T原创 2017-03-22 17:54:35 · 733 阅读 · 0 评论 -
Android热修复实现原理以及方法
现在主要由两大方法 1.阿里AndFix,主要是采用Ndk实现对方法指针的替换 2.腾讯Tinker 现在主要说的是tinker的实现方法: 一. 首先介绍下两个概念: public class PathClassLoader extends BaseDexClassLoader { 用来加载已安装应用程序的dexpublic class DexClassLoader extends原创 2017-03-23 15:06:46 · 499 阅读 · 0 评论 -
Android打包流程
第一步:打包资源文件,生成R.java文件。 【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件) 【工具】aapt工具 【输出】打包好原创 2017-03-24 13:46:39 · 258 阅读 · 0 评论 -
Android5.X (五) : Activity的跳转效果
首先来说说以前我在项目中用到的Activity的跳转的效果是怎么实现的:第一种方法:既然要实现动画效果,那肯定得写个动画啦 1.res文件夹下的anim的文件里创建一个文件,里面写4个动画文件 都是如下的简单的位移动画:xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.and原创 2015-12-25 10:13:13 · 574 阅读 · 0 评论 -
自定义控件(一)
自定义控件的编写,肯定是大多数初学者的魔音哈。那么我在这讲一下,我自己在编写自定义控件中代码中的思路首先:确定自己要自定义的控件,是可以继承已有的系统控件进行编写,还是得继承View,完全自己写。第二:你得知道View绘制的几个步骤1.onMeasure: 只有测算了之后,才能获取View的高度和宽度 onMeasure有三种测量mode:(1) EXACTLY :原创 2015-12-28 10:23:08 · 451 阅读 · 2 评论 -
自定义控件(二)
上一章,我们讲了一个最基本的View的绘制,并且举了一个简单的栗子。那我们就继续深入下去:在现实的项目中,大家肯定会遇到很多的圆,圆里也有很多的文字!字和圆的颜色都不一样。难道我们每一个要自定义一下吗?当然不需要!解决方案就是自定义属性!通过自定义属性来对字的颜色,和圆的颜色进行设置。那么怎么自定义属性呢?打开Values文件夹下的attrs.xml文件,定义以下属性:原创 2015-12-28 15:28:34 · 390 阅读 · 0 评论 -
如何使用外部的数据库文件
把数据库放在res/raw,assets目录下, 先把数据库复制到/data/data/包名/databases/,然后通过db.openOrCreateDatabase(db文件)打开数据库原创 2017-03-20 14:24:10 · 395 阅读 · 0 评论 -
Android属性动画实战(一)
属性动画,就是通过改变对象的属性产生动画 先看看效果 对象的属性有以下几种:1. Duration动画的持续时间,默认300ms。2. Time interpolation:时间差值,乍一看不知道是什么,但是我说LinearInterpolator、AccelerateDecelerateInterpolator,大家一定知道是干嘛的 了,定义动画的变化率。3. Repeat count原创 2016-04-13 16:40:17 · 673 阅读 · 0 评论 -
Android屏幕适配
一).首先了解下基础知识: 1,屏幕的尺寸(英寸),5英寸,就是指屏幕对角线的长度为5英寸,1英寸约等于2.56厘米 2,屏幕的分辨率:(PX) 就是像素点数,1px = 1像素点 3, 屏幕的像素密度(dpi):就是每英寸的像素点数 他与尺寸和分辨率有关他们三者的关系如下:比如:一个手机的分辨率为 1280*720 它的尺寸为5英寸原创 2016-04-11 18:28:14 · 569 阅读 · 0 评论 -
Android Studio 中常用的插件
Android 方便大家开发的几个常用插件原创 2016-04-01 16:12:43 · 815 阅读 · 0 评论 -
Android5.X (六) : RecycleView
RecycleView:它是谷歌替代ListView的控件,它拥有ListView的item的回收复用功能,但是RecycleView可以把ViewHolder的实现封装起来,我们只要实现自己的ViewHolder就可以了。 跟RecycleView息息相关的几个类有: ViewHodler:需要继承RecyleView的ViewHolder Adapter:适配器:需要继承RecycleVi原创 2016-01-21 15:56:42 · 829 阅读 · 0 评论 -
线程管理(二)创建线程池管理线程
为什么要用线程池管理线程?那是因为不停的创建线程是非常耗费资源的的一种方法,所以就需要对它进行管理public class ThreadManager { private ThreadManager() { } private static ThreadManager instance = new ThreadManager(); private static final原创 2016-01-13 16:18:00 · 300 阅读 · 0 评论 -
线程管理(一)AsyncTask与Thread的差别
AsycTask,做Android的应该都是熟悉的不能再熟悉了,当我们在进行耗时操作的时候,就可以使用这个了 但是有的人就在想,Thread不是也可以开一个子线程进行耗时操作吗?那这两个有什么样的区别呢? 那么一起来看下AsycTask源码啦public abstract class AsyncTask<Params, Progress, Result> { private stati原创 2016-01-13 15:14:20 · 1474 阅读 · 0 评论 -
数据持久化方案(四)文件保存
文件保存,也算是比较常见的,也比较方便的保存方式。 在Android中,我们可以通过文件保存json数据来实现本地缓存public class FileUtil { public static final String CACHE = "cache"; public static final String ICON = "icon"; public static final原创 2016-01-12 16:45:22 · 410 阅读 · 0 评论 -
数据持久化方案(三)ContentProvider
数据库在Android当中是私有的,不能将数据库设为WORLD_READABLE,每个数据库都只能创建它的包访问。这意味着只有创建这个数据库的应用程序才可访问它。也就是说不能跨越进程和包的边界,直接访问别的应用程序的数据库。那么如何在应用程序间交换数据呢? 如果需要在进程间传递数据,可以使用ContentProvider来实现。大部分使用ContentProvider操作的数据都来自于数据库,但是原创 2016-01-11 17:13:03 · 321 阅读 · 0 评论 -
数据持久化方案(二)SharedPerference
在此提供下OrmLite官网的demo地址,有兴趣的同学可以去下载: http://blog.csdn.net/oo8_8oo/article/details/7302156SharedPerference这个东西很是好用,可以用来记录各种状态,以方便在其他的地方进行调用。SharedPreferences sharedPreferences = context.getSharedPreferen原创 2016-01-11 14:37:53 · 351 阅读 · 0 评论 -
OrmLite的快速使用方案
首先分享给大家一个可以查看sqllite数据库的工具:sqliteexpert,很好很强大的。大家可以下载免费版本的。地址:http://www.sqliteexpert.com/download.html1.Android Studio用户自己在gradle添加以下配置dependencies { compile 'com.j256.ormlite:ormlite-core:4.48'原创 2016-01-06 15:21:13 · 1906 阅读 · 0 评论 -
Anroid 数据持久化方案
Android有几种数据的保存方案,让我们可以尽量的减少对网络的消耗,优化用户体验。让我来给大家介绍一下吧:1.数据库:Android的数据库使用的是SQLlite,这是一个轻量级关系型数据库。大家既可以继承SqliteOpenHelper来进行数据库的管理,也可以使用第三方框架。我接下来会介绍第三方框架OrmLite的使用2.SharedPreference:轻量级存储:主要用来原创 2016-01-04 12:02:56 · 365 阅读 · 0 评论 -
自定义控件(六)- 百分比圆形
在自定义控件(2)里面我们做了一个百变的圆形,那我们就以那个为基础,在外边在加一层能根据百分比进行滚动的圆。 1。要在现有的圆外面添加一层滚动的圆弧,那首先我们先给他设置一个方法,让我们知道应该滚动多少 //设置目标的百分比 public void setTargetPercent(int percent) { this.mTargetPercent = percen原创 2016-01-04 11:16:07 · 409 阅读 · 0 评论 -
自定义控件(五)-自定义Title
虽然说google自己有actionbar,还有toolbar。但是绝大部分的时候我们还是需要自定义统一样式的TitleBar。那么让我们一起来探索怎么定义一个万能的TitleBar吧!(1)我们先把TitleBar 分为三个部分,左边,中间,右边(右边也许有2个按钮)。 并且右边和左边有可能是字,也有可能是图片(2)那么我们就可以定义一下几个属性 1. 是否需要显示左边原创 2015-12-31 15:13:07 · 307 阅读 · 0 评论 -
自定义控件(四)-下拉刷新与上拉加载
上一节,其实有个坑~不知道大家有木有发现哈,没有好好理解的童鞋可能没有发现。那就是BannerAdapter中的getCount方法,我返回的是100,但是明显100是不可以滴。到100之后,他就不能再进行轮播了!所以需要把100 改成Integer.MAX_VALUE; 接下来就是另一个常用控件:PullToRefreshListView。这玩意虽然用起来挺简单,但是里面涉及的内容还是挺多的。例原创 2015-12-29 18:10:41 · 390 阅读 · 0 评论 -
自定义控件(三)
有的童鞋可能看了前两节之后,觉得本博客逼格不够高,说的太简单了。那我们就来点干货吧!那么来点经常用到的复合控件:图片轮播~图片轮播,大部分的App里面有这个功能,主要用来播放广告等~那我们来简单的分析一下思路:怎么写这玩意?1.首先他是一个能不断循环,并能通过手指,左右切换!那我们就想到了ViewPager2.下面会有几个白色小点,跟随图片的切换,也不停的切换那我们就可以弄一个原创 2015-12-28 16:40:39 · 615 阅读 · 0 评论 -
Android打包详解
第一步:打包资源文件,生成R.java文件。 【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件) 【工具】aapt工具 【输出】打包好原创 2017-06-16 15:35:51 · 356 阅读 · 0 评论