Android开发
文章平均质量分 60
骑蜗牛看世界
这个作者很懒,什么都没留下…
展开
-
Android Architecture Component之Lifecycle-Aware Components
前言系列文章 Android Architecture Component之Lifecycle-Aware Components源码分析 Android Architecture Component之LiveData源码分析 Android Architecture Component之ViewModel源码分析 android.arch.lifecycle 包提供了类和接口原创 2017-11-24 09:21:35 · 1139 阅读 · 0 评论 -
android:scaleType
为适应不同屏幕的手机,ImageView图片的显示比例,可以使用android:scaleType属性来处理,处理方式的有以下几种:1、在xml配置中使用: android:scaleType="centerCrop"2、在代码中使用:imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);ScaleType的值分别代表的意义:ImageVi原创 2016-06-11 08:23:36 · 643 阅读 · 0 评论 -
屏幕适配二 Values 适配
这个方法有个问题啊,拿我手机来举个例子吧,我手机4.7寸,像素·1280*720,dpi:320,不带虚拟按键(所以虚拟按键先不考虑,考虑平板的虚拟按键的话,误差会更大),当value文件夹只留下value-1280*720的时候,会报错,说找不到文件资源,其实实际匹配的value资源是value-1196*720,我查看了源码,系统栏的高度25dp(这也正好解释了为什么系统栏或者actionbar原创 2016-06-26 22:04:27 · 292 阅读 · 0 评论 -
Android studio 快捷键使用
Generate 快速创建构造 get/set gson格式化json等所在的名字所在位置:Main menu--CodeBasic 普通的代码提示所在位置:Main menu--Code--CompletionOverride Methods 重写父类方法,在Generate中也可找到对应功能所在位置:Main menu--CodeImpletment Methods 导入重写接口方法所在位置 同原创 2016-06-08 09:52:22 · 481 阅读 · 0 评论 -
Image-Loader
这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更深入了解这个库的使用和配置。 GITHUB上的下载路径为:https://gi转载 2016-05-18 20:17:41 · 298 阅读 · 0 评论 -
Android 框架
相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候想用MVP的,代码写着写着就变成了MVC,久而久之就对它们三个的选择产生了恐惧感,如果你也是这样的人群,那么这篇文章可能会对你有很大的帮助,希望大家看完都会有收获吧!文章重点:(1)了解并区分MVC,M原创 2016-05-07 14:29:54 · 2322 阅读 · 0 评论 -
线程并发总结
Synchronized关键字主要解决多线程共享数据同步问题。 ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题。 ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别: synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个原创 2016-05-07 13:37:46 · 1107 阅读 · 0 评论 -
Android横竖屏总结全
Android横竖屏要解决的问题应该就两个:一.布局问题二.重新载入问题1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:“unspecified”:默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显原创 2016-05-07 11:26:38 · 1748 阅读 · 0 评论 -
Android 线程创建与销毁
在Android开发中经常会使用到线程,一想到线程,很多同学就立即使用new Thread(){…}.start()这样的方式。这样如果在一个Activity中多次调用上面的代码,那么将创建多个匿名线程,程序运行的越久可能会越来越慢。因此,需要一个Handler来启动一个线程,以及删除一个线程,保证线程不会重复的创建。 1、创建Handler的一般方式 一般会使用Handler handle原创 2016-05-12 20:08:22 · 841 阅读 · 0 评论 -
JnI调用机制
JNI的简单介绍Java Native Interface (JNI)是java本地调用接口,所谓的native就是调用c/c++的程序。java调用C语言的情况一般有三种:调用驱动。由于操作系统提供的驱动一般都是C接口,Java语言并不具备操作这些驱动的能力。对于计算量比较大,处理数据比较多的模块,java的效率没有C高,所以希望用C去完成。对于某些功能模转载 2016-04-10 11:59:37 · 504 阅读 · 0 评论 -
LayoutInflater深入理解
这个标题起的有点夸张哈,但是 这个类的一些用法,在Android开发者使用的过程中,确实存在着一些很普遍的误区,最起码我研究的这么多小项目的源代码,基本上都在错误的使用这个类。今天,看到了一篇文章讲LayoutInflater的用法,瞬间感觉自己对这个类确实不够了解,于是简单的看了下LayoutInflater类的源代码,对这个类有了新的认识。首先,LayoutInflater这个类是用来干嘛的呢转载 2016-03-15 10:39:19 · 368 阅读 · 0 评论 -
JavaBean规范
1、JavaBean必须是一个公开的类,也就是说JavaBean的类访问权限必须是public的。2、JavaBean必须是具有一个无参数的构造方法。如果在JavaBean中定义了自定义的有参构造方法,就必须添加一个无参数构造方法,否则将无法设置属性,如果没有定义自定义的有参构造方法,则可以利用编译器自动添加的无参构造方法。3、JavaBean一般将属性设置成私有的,通过使用getXXX()方法和s原创 2016-03-15 09:18:18 · 680 阅读 · 0 评论 -
android如何实现开机自动启动Service或app
android如何实现开机自动启动Service或app 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。 import android.content.BroadcastReceiver; import android.content.Context;转载 2016-03-14 19:14:53 · 2179 阅读 · 0 评论 -
ActionBar为Null
前言在使用 ActionBar的时候,有时候会爆出空指针异常,这是因为应用没有获取到 ActionBar 导致的,而导致应用没有获取到 ActionBar 的原因比较多,所以我们下面就来总结一下 ActionBar 获取不到的错误原因。解决办法检查你的应用是否设置了没有 ActionBar 的主题Theme,或者直接设置了 NoActionBar或NoTitleBar 属性,主要要检查这几点:检查转载 2016-06-26 22:25:08 · 480 阅读 · 0 评论 -
WebView问题总汇
我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题。就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来。有些是老生常谈,有些则是个人摸索得出解决方法。下面就是整理得到的些干货。1.加快HTML网页装载完成的速度默认情况html代码下载到WebView后,webkit开始解析网页各个节点,发现有外部样式文件或者外部脚本文件时,会异步发起网络请求下载原创 2016-06-22 22:41:33 · 338 阅读 · 0 评论 -
android自带分享,浏览器分享
android自带分享分享方法图片文字分享/** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题原创 2016-08-03 17:47:51 · 1240 阅读 · 0 评论 -
Android Architecture Component之ViewModel源码分析
前言为了更好了解ViewModel,建议看下几篇文章 Android Architecture Component之Lifecycle-Aware Components源码分析 Android Architecture Component之LiveData源码分析 知识准备重要知识介绍(后面用到) /** * Control whether原创 2017-11-14 16:28:33 · 1394 阅读 · 0 评论 -
基于CountDownView的时间控件扩展
基于CountDownView的时间控件扩展前言首先,新年的一年里祝大家,心想事成,鸡年大吉。去年的时候,我们做时间控件的时候一直遗留一个问题那就是正计时控件一直没有好的解决方案,我们很想把CountDownView既支持正计时又能支持倒计时。基于这个想法,便有了今天这篇文章,原理不在介绍,其实很简单,主要是我们知道怎么用,此控件的优点有: * 实现了正计时倒计时的统一 * 优化了Adapte原创 2017-02-08 13:39:19 · 1213 阅读 · 0 评论 -
View注解框架简单学习(绑定对象,绑定事件)
View注入框架简单学习(绑定对象,绑定事件)前言现在有许多针对View的注解框架,例如Xutils的ViewUtis,解决了令我们厌烦的findViewById对象的初始化,以及绑定OnClick事件的问题,提高了开发效率,那么怎么实现的呢?我们来简单学习一下,自己写个框架,此种方法是运行时的注解,而Buttknife是编译时期的注解.绑定View对象自定义针对View的注解对注解不熟悉的同学可以原创 2016-11-21 13:38:41 · 1225 阅读 · 0 评论 -
Dagger2在MVP中的应用(Dagger2+Retorfit+MVP)
Dagger2在MVP中的应用需要基础Dagger2MVP建议把基础学会再看下面文章好理解点。为什么MVP中要用Dagger2?我们首先看一下传统的mvp有什么缺点?presenter在Activity的耦合我们知道在传统的MVP中Preseter是在Activity中初始化的,也就是显式的new了一个对象,那么这里面在这个Activity中就有了耦合在里面。为什么会有耦合呢?场景1: 假如原创 2016-11-30 11:07:55 · 1246 阅读 · 0 评论 -
Dagger2详解(原理)
Dagger2Daggger2是啥 Dagger is a fully static, compile-time dependency injection framework for both Java and Android. It is an adaptation of an earlier versioncreated by Square and now maintained by Goo原创 2016-11-14 10:53:55 · 3630 阅读 · 0 评论 -
Volley离线缓存篇
Volley离线缓存篇序言前几天项目有个需求,app离线状态下读取缓存数据,当然这个很简单,无论是存json还是对象,都可以自己写个文件或者数据库存取,但是既然用到volley框架,那么整个存取过程应该在volley中存取,我们知道volley本身自带缓存,但是在离线状态下volley请求走的是error,那么它也就不会从文件中读取数据,怎么做才能让volley在离线状态下读取它存的缓存呢?原理分析原创 2016-09-29 15:58:45 · 903 阅读 · 0 评论 -
WebView Js交互之混合交互
需求现在有这样的一个需求,给了你一个html页面,用webview加载获取html页面的内容。分析一下,我们获取页面内容只能同过js,但是不知道html页面中有什么js,怎么做呢?解决方法我们知道webview可以调用js.那么我们可以动态注入一个js给html页面,然后在js调用android 中的方法,从而达到获取内容的目的。注入jsdetail_content.setWebViewClie原创 2016-10-10 11:35:26 · 412 阅读 · 0 评论 -
MVP
什么是MVPmvc 模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等 视图(View):负责界面数据的展示,与用户进行交互,主要是xml文件; 控制器(Controller):控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样原创 2016-08-23 21:58:25 · 1301 阅读 · 0 评论 -
带泛型的parcelable序列化
Serializablepackage com.delta.news.model.entity;import java.io.Serializable;import android.os.Bundle;import android.os.Parcel;import android.os.Parcelable;public class CheckBoxData<T extends Serializ原创 2016-08-17 10:18:13 · 2175 阅读 · 0 评论 -
IndexOutOfBoundsException: Inconsistency detected. Invalid item position
RecyclerView Bug:IndexOutOfBoundsException: Inconsistency detected. Invalid item positioncause 使用 RecyclerView 加官方下拉刷新的时候,如果绑定的 List 对象在更新数据之前进行了 clear,而这时用户紧接着迅速上滑 RV,就会造成崩溃,而且异常不会报到你的代码上,属于RV内部错误。初原创 2016-08-19 10:11:47 · 438 阅读 · 0 评论 -
四种常见的 POST 提交数据方式
四种常见的 POST 提交数据方式文章目录 application/x-www-form-urlencoded multipart/form-data application/json text/xml HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提转载 2016-08-01 14:30:57 · 3463 阅读 · 0 评论 -
按钮防止多次提交
package com.delta.news.util;import android.util.Log;public class SingleClick { private static long lastTime; public static boolean isSingle(long defalutTime) { long currentTime = System.c原创 2016-08-04 14:27:23 · 472 阅读 · 0 评论 -
Android 应用自动更新
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下。 1. 准备知识 在AndroidManifest.xml里定义了每个Android apk的版本标识:转载 2016-03-14 15:34:02 · 610 阅读 · 0 评论 -
Activity退出的六种方式
我们先来看看几种常见的退出方法(不优雅的方式)一、容器式建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activityimport java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;public class BaseAct转载 2016-03-14 09:33:45 · 15055 阅读 · 1 评论 -
Android常用标记
Android常用动作、广播、类别等标志摘录:String BATTERY_CHANGED_ACTION 广播:充电状态,或者电池的电量发生变化 “android.intent.action.BATTERY_CHANGED”String BOOT_COMPLETED_ACTION 广播:在系统启动后,这个动作被广播一次(只有一次) “android.intent.action.BOOT_COMPLE转载 2016-03-14 09:23:36 · 659 阅读 · 0 评论 -
JNI概述
一、 JNI概述JavaNative Interface的缩写,中文为Java本地调用。从Java1.1开始,JNI即成为Java标准的一部分。JNI设计的目的是为了允许Java代码与其他语言进行交互。但这样做通常会导致丧失平台可移植性,通常是在特定的需求下进行,例如使用旧的其他语言的库、需要获得Java类库不支持的某种基于具体平台的特性、大量数学计算性能优化等。二、 JN转载 2016-03-19 20:33:11 · 497 阅读 · 0 评论 -
ViewGroup中的Scroller与computeScroll的有什么关系?
Android ViewGroup中的Scroller与computeScroll的有什么关系?答:没有直接的关系知道了答案,是不是意味着下文就没必要看了,如果说对ViewGroup自定义控件不感兴趣,可以不用看了。1.Scroller到底是什么?答:Scroller只是个计算器,提供插值计算,让滚动过程具有动画属性,但它并不是UI,也不是辅助UI滑动,反而是单纯地转载 2016-03-31 15:27:28 · 515 阅读 · 0 评论 -
android:interpolator
android:interpolator: 加速器,非常有用的属性,可以简单理解为动画的速度,可以是越来越快,也可以是越来越慢,或者是先快后忙,或者是均匀的速度等等,对于值如下:@android:anim/accelerate_interpolator: 越来越快@android:anim/decelerate_interpolator:越来越慢@andro原创 2016-03-31 15:16:49 · 585 阅读 · 0 评论 -
ViewFlipper
ViewFlipper继承于ViewAnimator,android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。该类有如下几个和动画相关的函数:l setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为andro原创 2016-03-31 14:39:14 · 487 阅读 · 0 评论 -
Android Studio下JNI开发
一步一步做Android Studio下JNI开发 Android Studio是Google基于IntelliJ IDEA专门为Android开发而定制的集成开发环境。在2013年5月的Google大会上首次发布。Goolge宣布2015年底就中止Eclipse官方支持,所以是时候拥抱Android Studio了。 先来看下相关知识背景 1.什么是JNI?转载 2016-03-18 20:16:32 · 1448 阅读 · 0 评论 -
xml或者代码实现Animation
1.Tweened Animation 渐变动画该类提供了 旋转,移动,淡入淡出,缩放2.Frame-by-Frame Animation和放电影一样 通过一系列的图片 按照我们制定的动作 显示出来 Tweened Animation:1.Alpha:淡入淡出效果2.Scale:缩放效果3.Rotate:旋转效果原创 2016-03-31 10:49:16 · 435 阅读 · 0 评论 -
xml和代码实现Animation
1.Tweened Animation 渐变动画 该类提供了 旋转,移动,淡入淡出,缩放2.Frame-by-Frame Animation 和放电影一样 通过一系列的图片 按照我们制定的动作 显示出来 Tweened Animation: 1.Alpha:淡入淡出效果 2.Scale:缩放效果 3.Rotate:旋转效果 4.Translate:移动效果Tweened Animati原创 2016-03-31 10:47:13 · 319 阅读 · 0 评论 -
常用框架
一、常用框架1、volley项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载; (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请原创 2016-03-14 08:32:14 · 895 阅读 · 0 评论 -
获取字的高度和宽度
宽度第一种public int getTextWidth(String text, Paint paint) { Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); int width = bounds.left + bounds.width(); return width;}第二种原创 2016-03-18 15:51:28 · 1425 阅读 · 0 评论