![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android应用开发
文章平均质量分 70
HarryClaire
Hello World
展开
-
判断android应用是否处于前台
Android程序开发时,有时需要判断当前程序是否处于前台或者后台。以便进行专属于前台或者后台的操作。那么如何判断呢?这里给出日常程序开发中的一些代码,希望能给大家带来些许帮助: public boolean isAppOnForeground(Context context) { ActivityManager am = (ActivityManager) context.g...原创 2018-05-03 17:59:37 · 309 阅读 · 0 评论 -
Android6.0权限获取方法封装
项目中很多操作需要事先进行危险权限的判断和获取,本人在Android项目开发中封装了一个获取Android6.0以上系统危险权限的获取的方法,希望能给大家带来帮助。首先定义一个接口,里面有两个方法。public interface AccreditListener { void onAccreditSucceed(); //权限获取成功 void onAccreditF...原创 2018-03-20 17:49:51 · 250 阅读 · 0 评论 -
Android键盘事件
本文主要会简单介绍 下Android项目开发中有关系统软键盘的事情,主要包括强制开启键盘、强制收起键盘,以及如何在键盘开启和收起时进行事件监听。话不多说,直接进入主题。强制开启键盘 /** * 强制开启软键盘 * 这里的mEditText就是键盘目前获得焦点的输入框 */ private void showSoftInput() { ...原创 2018-02-24 17:22:38 · 575 阅读 · 0 评论 -
EditText焦点监听
Android项目开发中有时需要监听EditText上焦点的变化(焦点的获取和释放)。下面就简要介绍一下,原理很简单,希望给初学的朋友带来帮助。 其实很简单,跟监听点击事件一样。这里我们有个关键类View.OnFocusChangeListener接口,绑定这个接口就OK了。 mEditText = (EditText) findViewById(R.id.edt_focus)...原创 2018-02-24 17:04:40 · 2386 阅读 · 0 评论 -
Android自定义通知栏显示
概述本文主要想说一下android项目开发中经常会使用到通知机制中的通知栏框架(Notificaiton)。通知栏位于设备的顶层,可以展开的通知列表。通知栏的主要作用大概可以分为三大块:显示未读的消息(短信消息、QQ、微信等消息)显示客户端的PushMessage(推送消息),如系统更新、新闻、广告推送显示正在进行的后台程序,如各类型的音乐播放器等。关键类介绍...原创 2018-03-09 15:13:37 · 8589 阅读 · 1 评论 -
Android线程安全问题分析与解决
问题描述android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. ...原创 2018-03-01 17:43:14 · 1655 阅读 · 0 评论 -
Android之Window和WindowManager简述
概述Window是窗体对象,它是android体系中非常基础、至关重要的一环。基本上Android中所有的视图都是通过Window来呈现的,可以说Window是实际上的View的管理者。平时我们直接用到Window和WindowManager对象的时候却不是很多,一般都是在设置Android设备悬浮窗口时才会直接用到。但是还是要多多探究Window和WindowManager对象,这对深层次理...原创 2018-03-01 10:45:14 · 356 阅读 · 0 评论 -
Android桌面悬浮窗口举例
概述Android项目开发时,有时候需要开发一些悬浮在桌面上的视图。比如桌面小精灵,各种音乐播放器的悬浮播放控制栏等等。本文就借助一个小的demo,用代码的方式大概进行介绍。 原理开发桌面悬浮窗口一般遵循两个大的原则。 1.最根本的原则是采用WindowManager类,WindowManager有addView(View view, ViewGroup.LayoutParams ...原创 2018-02-28 17:01:25 · 2409 阅读 · 0 评论 -
Android判断当前界面是否为在桌面
概述Android开发中有时候会涉及到判断当前界面是否为桌面的情况,比如说开发桌面悬浮控件的时候或者手机桌面小精灵的时候。原理原理很简单,首先获取属于桌面应用的所有应用的包名,放在一个数组里面。 /** * 获得属于桌面的应用的应用包名称 * 返回包含所有包名的字符串列表数组 * @return */ private Li...原创 2018-02-28 16:44:20 · 3118 阅读 · 1 评论 -
MeasureSpec介绍
MeasureSpec作为View中的一个很关键的内部静态类,在View的绘制过程中起到了很重要的作用。MeasureSpec参与了View的measure过程,很大程度上决定了View的尺寸规格。 在测量过程中,Android系统会将View的布局参数(LayoutParams)根据父容器所施加的规则,转化为MeasureSpec。然后,再根据这个measureSpec来测量View的宽度/高...原创 2018-02-08 14:48:11 · 231 阅读 · 0 评论 -
MotionEvent之getRawX/getRawY与getX/getY
android项目开发中,经常会编写自定义控件或者判断用户手势操作,此时需要使用MotionEvent中的getRawX()/getRawY()与getX()/getY()取得触摸点在X轴与Y轴上的距离,这四个方法都返回一个float类型的参数,单位为像素(Pixel)。 这四个参数的具体含义是:getRawX():触摸点相对于屏幕的横坐标 getRawY():触摸点相对于屏幕的纵坐标...原创 2018-02-07 09:34:57 · 507 阅读 · 0 评论 -
AsyncTask使用总结
概述AsyncTask是由Android封装的一个轻量级异步抽象类,可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。AsynTask的源码如下:public abstract class AsyncTask<Params, Progress, Result> { private static final String LOG_...原创 2018-02-01 20:28:09 · 400 阅读 · 0 评论 -
Android程序水印效果
概述首先看一下大致的水印效果 上图中的水印中的文字部分是根据不同的账号进行动态赋值的。那么,如何进行水印效果的添加呢?下面结合代码简要说明一下。水印的原理水印的原理是在整个布局的最上方或者最底部铺设一层要求的布局文件,而且这个布局文件是全透明的,并且不会添加上任何的点击事件。<?xml version="1.0" encoding="utf-8"?><...原创 2018-05-03 18:05:52 · 1009 阅读 · 1 评论 -
Android中的MVP框架说明和举例
概述MVP(Model-View-Presenter)分层框架模式,它是Android逻辑交互框架中比较重要的一个。其中M V P具体的意义说明如下。Model: &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;模型层,作为功能模型。它主要原创 2018-05-17 15:01:10 · 410 阅读 · 0 评论 -
Java设计模式——组合模式
概述组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推。 很明显,这是树形结构,终结点叫叶子节点,非终节点(组节点)叫树枝节点,第一个节点叫根节点。同时也类似于文件目录的结构形式:文件可...转载 2018-05-17 15:56:22 · 173 阅读 · 0 评论 -
运用scheme协议唤起外部app
最近所做的项目中有一个需要唤醒外部APP的功能,甲方要求在接入是需要用scheme方式。为此,本人查了一些资料,在研究的基础上进行了开发。现总结如下:什么是scheme的唤醒方式首先,需要指出的是在客户端开发中,scheme是一种页面内跳转协议,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定...原创 2019-07-11 20:32:48 · 5271 阅读 · 0 评论 -
git rebase和git merge的区别
git rebasegit rebase会“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。原理很简单:rebase需要基于一个分支来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。这里的操作是基于文件事务处理的,所以你不用怕中间失败会影响文件的一致性。在中间的过程中...转载 2019-05-23 20:21:41 · 182 阅读 · 0 评论 -
java中的进程和线程区别
【概念】进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,竞争计算机系统资源的基本单位。线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。一个程序由一个或多个进程组成,一个进程由一个或多个线程组成。【进程 线程的区别】1.地址空间:进程之间是独立的地址空间,但同一进程的线程共享本进程的地址空间。2.资源占用同一进...原创 2019-03-12 20:19:10 · 5270 阅读 · 0 评论 -
synchronized与volatile的区别
【作用机制不同】1)volatile所修饰的变量不保留拷贝,直接访问主内存中的。2)synchronized用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最只有一个线程执行该段代码。【量级不同】1)volatile轻量级,只能修饰变量;2)synchronized重量级,可修饰方法【安全性不同】1)volatile只能保证数据的可见性,不能保证数据操作的原子性。不能...原创 2019-03-12 20:02:30 · 395 阅读 · 0 评论 -
Cleartext HTTP traffic to xxx not permitted解决
概述 最近在项目开发中遇到了一个问题,我把android项目SDK升级到28,某些高版本的手机会网络请求失败。出现了一下跟网络相关的报错信息。这里可以粘出来看下:W/System.err: java.io.IOException: Cleartext HTTP traffic to ...com not perm...原创 2019-03-15 18:04:25 · 3590 阅读 · 4 评论 -
ImageView的scaleType的介绍
Android开发中imageview控件用的还是相当多的,有时候会遇到一个特别头疼的问题:imageview加载的图片大小不一定完全适配合适,不同的手机显示的图片会自动裁剪一些内容,导致不同屏幕分别率的手机图片显示不一样。基于这样一个状况,imageview的scaleType属性能帮助解决上述的问题。scaleType表示的是ImageView控件大小和所加载的图片大小之间的关系。其属性值...原创 2018-12-26 15:46:10 · 241 阅读 · 0 评论 -
dagger2注解框架基础概念介绍
前言dagger2的大名我想大家都已经很熟了,它是解决Android或java中依赖注入的一个类库(DI类库)。当我看到一些开源的项目在使用dagger2时,我也有种匆匆欲动的感觉,因此就立马想一探它的究竟,到底能给我带来怎样的好处。在学习使用dagger2的过程中,我遇到了以下的一些困惑:dagger2中的Inject,Component,Module,Provides等等都是什么东东,...转载 2018-06-08 15:14:21 · 1087 阅读 · 0 评论 -
git提交中E325: ATTENTION或E325: 注意 的解决方法
问题引入首先看下图,在git提交、编辑、合并等过程中,如果没有将指令进行完就将git窗口关闭有时会出现这样的界面。 原因分析git在指令意外中断时,一般会有一个缓存的机制,它会记住上次中断的问题。在下次进入vim指令时,如果很重要的中断一般会提示你前面有某个操作不当或者没有结束,就出现了上面的窗口。如果不解决就会一直缠着你,以至于出现该窗口后再输入git指令的话一般就不显示在...原创 2018-05-28 16:27:46 · 7778 阅读 · 0 评论 -
利用LruCache类缓存图片资源
概述LruCache是android3.1及以后提供的缓存类,它是一个泛型类,内部以哈希表的形式存储了APP所需要的缓存数据,并提供了用于存和取的set、get方法。值得一说的是它内部支持的是LRU(Least Recently Used)缓存算法,就是指当缓存满了的时候,LruCache会移除最近较少使用的缓存对象来为新的缓存对象腾出必要的空间。 这个类比较小,下面贴出原生代码:pub...原创 2018-05-15 14:57:19 · 384 阅读 · 0 评论 -
Android中aar文件
概述.arr文件,Android Archive,就是Android库项目的二进制归档文件。为何要使用aar文件呢?因为我们在项目中有些代码如果没有什么改动的需要的话,我们就可以将这些固定的代码制作成.aar文件,然后放在lib中通过引入的方式进行调用。这样做的一个特别突出的特点是加快项目的编译速度。 这样看来,.aar文件跟.jar文件具有相似的作用。只不过.aar文件是可以将java文件...原创 2018-05-14 16:43:09 · 1035 阅读 · 0 评论 -
Android性能优化方法总结
由于Android设备内存有限,特别是一些配置比较低的手机在运行较大的java程序时有时候由于内存不够用的,会出现OOM和ANR等情况,严重影响用户的使用。那么怎样做会降低上述情况的发生呢?本文总结了一些比较好的android性能优化方式,希望能给学习android开发的朋友们带来帮助。...原创 2018-05-14 14:35:20 · 259 阅读 · 0 评论 -
RxJava基础知识点总结
代码实现场景1:被观察者、观察者和订阅分开写 /** * 先创建一个上游Observable * 角色:被观察者 */ Observable<String> observable = Observable.create(new ObservableOnSubscribe<String&g...原创 2018-02-02 15:43:55 · 264 阅读 · 0 评论 -
ProgressBar效果的自定义Dialog
下面介绍一款不错的Dialog,之所以介绍是因为它可以实现数据加载时的progressBar,并且还可以让界面失去焦点从而不能点击界面上组件的作用。话不多说,直接上代码。 dialog_loading.xml<?xml version="1.0" encoding="utf-8"?><ProgressBar xmlns:android="http://schemas.an...原创 2018-01-30 17:03:56 · 387 阅读 · 0 评论 -
View事件分发机制探究
概述Android开发中,事件分发机制则是不少童靴进步中的的拦路虎。但是必须客观认识View的滑动机制—-非常、特别以及极其重要!像ScrollView嵌套RecyclerView(或者ListView)的滑动冲突问题的理论基础就是事件分发机制。 书本上的也有不错的讲解View事件分发机制的资料,但是大部分都直接从源码角度进行分析,对于刚入门不久的同学们有点晦涩难懂。本文将通过一个三层的Vi...原创 2018-01-31 15:54:44 · 243 阅读 · 0 评论 -
Android开发之UncaughtExceptionHandler
在android原声开发或者进行其他java类项目时,我们常用try(){} catch(Exception e){}进行异常的捕捉和处理。有些异常是不能够采用这种方式捕捉的,比如在APP运行的时候会有闪退现象,有些闪退是JVM层面的,不能够及时捕捉到。此时,我们可以通过实现UncaughtExceptionHandler接口的方式予以处理。这里说的处理是指我们在不能捕捉到的异常发生时,进行相应的原创 2017-12-28 17:50:25 · 679 阅读 · 0 评论 -
开启android软键盘搜索功能
在进行android程序开发过程中,一般情况下在输入框获取焦点后或者输入内容前android手机会自动弹出系统的软键盘。通常情况下,此时的软键盘只包含基本的字母、标点符号、删除键和换行键等基本的功能区域,不包含搜索区域。如下图所示: 有些情况下,由于项目需求或设计的需要,我们需要开启并监听android手机软键盘的功能,那么怎么做呢?很简单,具体的操作说明如下。 (一)第一步,原创 2017-12-28 14:38:14 · 3900 阅读 · 0 评论 -
Android之JNI NDK ABI简要说明
JNI(Java Native Interface)java本地接口,是android设备中Java代码和c/c++等底层代码相互沟通的机制,通过JNI,java代码个底层代码可以互相调用。在实际项目中,这种本地接口是非常必要的,因为java代码是不能驱动android硬件设备的,比如调用语音识别设备时,需要在底层利用c/c++代码进行硬件设备驱动和声音采集等操作,然后通过JNI让上层应用进行调用原创 2018-01-11 16:17:06 · 758 阅读 · 0 评论 -
WebView获取JS返回值
在进行Android远程和前端混合开发时,经常需要在WebView中获取或者拦截JS方法的返回值。比如在web页面中点击【退出】按钮,会发送一个标志退出的参数(一般为String类型),然后WebView拦截该参数,调用finish()方法,进行原生界面的退出。本人将在项目开发中拦截JS参数,调用原生方法的经验总结如下:1.原生WebView中mSystemWebViewClient原创 2017-06-30 10:44:00 · 2389 阅读 · 0 评论 -
ScrollView嵌套ListView
解决ScrollView嵌套ListView时只显示一行的问题原创 2017-06-28 15:54:46 · 358 阅读 · 0 评论 -
Android开发之Notification详解
通知是Android开发中的一个重要组件,比如在移动开发中当有短信发过来或者有未接来电的时候,设备上会有相应的提示信息。这些信息一般会显示在手机的状态栏上。Android系统提供了处理通知的类,即Notification和NotificationManager。其中,Notification类表示全局效果的通知,NotificationManager类则用于发送和显示通知等具体的操作。使用No原创 2015-11-20 16:12:21 · 446 阅读 · 0 评论 -
Android中Fragment之间的通信和参数传递
本文详细阐述了在Android开发中,通过接口调用的方式进行Fragment之间的通信和参数传递。原创 2015-11-20 10:05:50 · 760 阅读 · 0 评论 -
Activity简述
(一)概念 Activity的中文意思的“活动”,它在Android中也是作为主要的活动承载着发挥着重要作用。在Android中,Activity作为最基本的模块,它提供了系统和用户交互的可视化界面。在Android移动应用中可以包含一个或多个Activity,这取决于具体的应用程序设计。当然,一般情况下应用程序往往包含多个Activity。 Activit原创 2015-11-19 18:42:20 · 1222 阅读 · 0 评论 -
Android之Fragment简述
一、概述Fragment中文意思是“碎片”,它是在Android 3.0 (API level 11)开始引入Fragment的。它与Activity十分相似,用来在Activity中描述一些行为或者一部分用户界面。在Activity运行的时可加载或移除Fragment模块。一个Fragment在使用时必须要嵌入到一个Activity中。因此,我们可以把Fragment想成Activity原创 2015-11-19 20:09:57 · 664 阅读 · 0 评论 -
Android体系架构介绍
Android系统采用了四层的架构模式,自下向上依次为:Linux内核层、系统库和Android运行时、应用程序框架层、应用程序层。下面将对上述四层框架进行简单的介绍: 一、Linux内核 Android核心系统服务基于Linux2.6内核的,如安全原创 2015-11-18 10:40:19 · 856 阅读 · 0 评论 -
Android开发之SharedPreferences详解
一、概述利用SharedPreferences保存数据是Android本地保存数据的方式之一。SharedPreferences主要用于保存基本类型的数据,例如int、long、string、Boolean等,并且保存数据时都以键值对的形式进行保存。值得注意的是,在应用程序结束运行时,SharedPreferences中保存的数据仍旧会存在。在项目开发中,有两种方式获取SharedPref原创 2015-11-20 21:00:10 · 906 阅读 · 0 评论