
Android
文章平均质量分 73
Elven_Shi
这个作者很懒,什么都没留下…
展开
-
Android性能优化
Android性能优化方案布局优化尽量减少layout层级,减少界面绘制的工作量。 采用,标签自定义View的绘制onDraw中不要创建大量的局部对象。因为onDraw方法会被频繁调用,这样就会在一瞬间产生大量的临时对象,不仅会占用过多内存还会导致系统频繁GC,降低程序执行效率。 onDraw中不要做太多耗时才操作。内存优化静态变量导致的内存泄露 示例:一个外部的静态Context变量引用了原创 2016-10-28 17:28:55 · 638 阅读 · 0 评论 -
Android之为图片创建Uri路径
有时候我们需要为拍出的照片或者裁剪的图片指定保存路径。那么如何为图片创建保存路径呢?方法有两种:第一种是直接创建url或者file路径。第二种是创建Uri路径。创建创建url或者file路径:/** * 制作图片的路径地址 * @param context * @return */ public static String createPath(Context原创 2016-04-18 09:45:55 · 4722 阅读 · 0 评论 -
禁止ViewPager的左右滑动事件
Android开发中ViewPager用到的频率还是比较频繁的,我们知道ViewPager有左右滑动的监听事件。有时候我们不想使用它的左右滑动监听,想要去掉,我们该怎么办?这时候我们布局的时候不要直接用v4包下面的ViewPager,而是实现新建自己的ViewPager继承v4下面的ViewPager,复写onTouchEvent和onInterceptTouchEvent方法。这两个方法主要是用原创 2016-07-12 15:53:16 · 6555 阅读 · 1 评论 -
Android开发之Pending Intent
一、Pending Intent简介PendingIntent类提供了一种创建可由其他应用程序在稍晚的时间触发的Intent的机制。PendingIntent通常用于包装在响应将来的事件时触发的Intent,例如单击Widget或Notification。Tip:在使用时,PendingIntent会执行那些包装好的Intent,同时拥有与你在自己的应用程序中执行他们时候相同的权限和身份。原创 2016-04-11 16:23:29 · 1548 阅读 · 0 评论 -
Android的startActivityForResult用法简单介绍
转载注明出处:Activity的跳转方式有两种,一种是startActivity直接跳转,另一种是startActivityForResult,带有数据回传的跳转。新建一个FirstActivity类package com.example.androidtest1;import android.app.Activity;import android.content原创 2016-07-11 16:01:06 · 921 阅读 · 0 评论 -
Android网络相关操作类
平时开发过程中,可能需要对Android的当前网络做判断。判断其是否是wifi网络,或者是否是移动数据网络。为什么需要判断当前网络类型。比如音乐播放器,当用户想要下载某首歌的时候,如果是移动数据网络就需要提醒用户当前是移动数据网络,继续下载将会消耗移动数据流量,产生流量费等等。这样会显得比较友好,用户体验也相对较好。如果是WIFI网络就直接下载。下面提供一个简单的工具类,用来判断当前网络是否可用,原创 2016-07-11 15:02:47 · 776 阅读 · 0 评论 -
Android如何选择targetSDKVersion
转载请注明出处:英文原文 Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion 概述Android开发的应该都见过compileSdkVersion、minSdkVersion 以及 targetSdkVersion。compileSdkVersion和minSdkVersion比翻译 2016-06-24 11:02:02 · 4159 阅读 · 0 评论 -
Android之本地相册图片选取和拍照以及图片剪辑
转载请注明出处:相信有很多Android开发人员在日常开发中,由于项目需求,需要我们的APP能够从相册中选取图片并剪辑,以及拍照剪辑后上传的功能。如果之前你没有做过这个功能,刚开始做的时候可能会遇到一些列的问题,这些问题大多是细节上的问题。今天,就根据自己的开发经验,给大家提供一套完成的相册图片选取剪辑和拍照剪辑的代码事例。可能我提供的代码可能还会存在依稀问题,大家可以相互交流学习。原创 2016-04-15 16:26:21 · 6872 阅读 · 2 评论 -
ContentProvider
ContentProvider简单使用事例AndroidManifest配置<!-- authorities 主机名 --><provider android:name="com.glinkus.icare.contentProvider.ContactProvider" android:authorities="com.android.glinkus.icare.Cont原创 2016-05-17 09:10:34 · 601 阅读 · 0 评论 -
Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86
转载请注明出处:简介在Android日常的开发过程中有的项目需要引入第三方的库,有时候大家可能会在libs文件夹下看到mips、armeabi、armeabi-v7a和x86这四个文件夹。那么这三个文件夹下面的包是干什么用的?这三个包下面存放的用C编译的本地库文件(各类『.so』文件)。mips、armeabi、armeabi-v7a和x86都表示CPU的类型。一般的手机或原创 2016-04-21 10:03:35 · 14757 阅读 · 0 评论 -
Android引导页设计
转载请注明出处: 现在有几乎所有的APP在首次使用的时候都会有引导页,引导页的内容也都是和App相关的内容。如何去简单去设计扩展性好的引导页是很重要的。今天就为大家提供一种结合ViewPager引导页的设计方式,很简单。首先创建引导页布局文件activity_guide.xml<RelativeLayout xmlns:android="http://schemas.android.c原创 2016-04-20 17:58:42 · 2408 阅读 · 0 评论 -
Android之利用RemoteViews自定义Notification
转载请注明出处:这是对别人劳动成果的尊重。一、概述RemoteViews从字面上看是一种远程视图。RemoteViews具有View的结构,既然是远程View,那么它就可以在其他进程中显示。由于它可以跨进程显示,所以为了能够更新他的界面,RemoteViews提供一组基础的操作用于跨进程更新它的UI。RemoteViews在Android日常开发中最常见的使用场景有两种:通知栏原创 2016-04-18 12:47:33 · 5033 阅读 · 1 评论 -
android的序列化接口Parcelable
Parcelable心得对于Android来说传递复杂类型,主要是将自己的类转换为基础的字节数组,Activity之间传递数据是通过Intent实现的。 Android序列化对象主要有两种方法,实现Serializable接口、或者实现Parcelable接口。实现Serializable接口是Java SE本身就支持的,而Parcelable是Android特有的功能,效率比实现Se原创 2015-08-13 15:05:03 · 725 阅读 · 0 评论 -
通用型adapter
Android开发中经常会用稿ListView和GridView。自然也就离不开adapter,一般情况下,都是去继承BaseAdapter,然后实现getCount(),getItem(...),getItemId()和getView(...)。这种方式如果有多个ListView就会显得比较繁琐,每个ListView都要实现这几个方法。效率也比较低。所以,我们可以抽取共性,定一个通用的Adapt原创 2016-07-18 11:05:31 · 859 阅读 · 0 评论 -
Android开发之Activity的生命周期(一)
一直想写一点关于Android方面的博客,但是由于工作特别忙,抽不出时间。最后想想,还是要挤出点时间写一点。这样不仅能够巩固自己的知识,说不定也能帮助有需要的人。博客中可能会存在技术错误,如果有还请大家指出,一起交流学习。首先从Activity的生命周期讲起。这是一张关于Activity生命周期的图正常情况下Activity会经历如下生命周期:1.onCreate(原创 2016-02-29 22:07:38 · 748 阅读 · 0 评论 -
Android四大组件之Service详解
一、Service简介Service和Activity一样都是Android的四大组件之一,不同的是Activity显示图形用户界面,而Service的运行是不可见的。如执行Intent查找、处理数据,更新ContentProvider、激活Intent和触发Notification。Activity在它的生命周期内定期启动、停止和重新创建,而Service则被设计为长生命周期的。用来执行一些原创 2016-06-17 17:38:34 · 1369 阅读 · 0 评论 -
Android 6.0运行时权限处理
运行时权限介绍Android 6.0在原有的AndroidManifest.xml声明权限的基础上增加了动态申请运行时权限。新增的运行时权限有 身体传感器、日历、摄像头、通讯录、地理位置、麦克风、电话、短信、SD卡存储。运行时权限处理方式Android targetSdkVersion在23以下(不包括23),不需要动态申请运行时权限,所以可以通过降低targetSdkVersion的方式可以解决运原创 2016-12-30 14:48:33 · 914 阅读 · 0 评论 -
Android开发过程中so调用出现的常见问题分析
概述 现在大部分app都会引入so文件,引入so的目的都是为了解决依赖于java本身所无法解决,或者说不能高效解决的问题。例如音视频编解码,百度地图,音频格式转换等等。都会无一例外的引入so,都会依赖于C/C++来解决。我们在日常开发的过程中,在引入第三方so库的时候也会出现一些问题。下面就列出一些常见的问题,并对问题作出相应的分析。常见问题及分析常见问题一,提示调用的native 方法未实现原创 2017-01-04 10:47:22 · 2219 阅读 · 0 评论 -
从技术角度分析Android APP防杀措施
概述 由于Google的推送服务在国内无法使用,开发人员就不得不采用特殊手段保证app不被杀死,使其能够长期驻留。不让app被杀,目的只有一个,就是保证tcp长链接,tcp消息能够必达。其实,让app不会被杀掉,一直处于运行状态。不论从用户角度,还是从Android生态环境的角度其实都是不推荐的。对于用户而言,app的长期驻留,导致其耗电加剧,CPU无法休眠,长期占用资源;对于Android生态原创 2017-01-04 11:47:54 · 1838 阅读 · 0 评论 -
利用RxJava实现的事件总线(Event Bus)
概述RxJava 在Android的APP开发中使用越来越广泛,其实不只是Android项目,java web方向的使用也越来越广泛。好多公司现在都开始引入RxJava和RxAndroid。RxJava对于开发效率,降低维护成本具有很大的作用。RxJava采用的设计模式是典型的观察者模式,是一种响应式编程,支持链式操作。RxJava到底是什么?RxJava(RxJava在GitHub上的托管地址 )原创 2016-11-11 10:14:02 · 1848 阅读 · 0 评论 -
Android之Sqlite开发中可能被你忽视的细节
概述 Sqlite是在Android日常开发中使用的还是比较频繁的。有的同学可能会说:“我平时用的就不多”。一种情况是你用的第三方的开源库比如realm,或者是ORM型的GreenDao等,甚至有的还用了key-value形式的Snappy DB。另一种情况确实是开发中数据库用的少,但是这种情况很少。我们用Sqlite可能很熟练,但是对于一些细节,可能做了很长时间开发的同学有好多细节的地方还是不原创 2016-10-28 17:21:05 · 1011 阅读 · 0 评论 -
Android之Bitmap
加载Bitmap BitmapFactory类提供了四类方法用来加载Bitmap:1、decodeFile(...) 通过图片路径加载,同时可以选择是否设置options,不设置则采用默认options。 例子: Bitmap bm = BitmapFactory.decodeFile(sd_path)采用默认options Bitmap bm = BitmapFactory.decod原创 2016-10-28 16:59:23 · 649 阅读 · 0 评论 -
ListView性能优化总结
ListView的优化总结1、重用ConvertView 我们都知道getView在首次调用的时候,convertView是null,所以这个时候就需要创建ItemView的layout。后续调用的时候就不需要了,因为此时的convertView已经不为null了。所以,convertView可以复用。不用每次都用inflate一下ItemView的layout布局,如果每次inflate,这样原创 2016-10-28 16:46:15 · 562 阅读 · 0 评论 -
Android资源文件目录assets和raw
assets 资源目录或者叫资产目录,里面存放的是无法直接访问的原生资源。与res属于同级目录。应用程序需要通过AssetsManager以二进制流的形式读取文件。应用程序编译的时候不会在R类中为assets目录下的文件创建索引。raw在res目录下(res/raw)也是用于存放一些资源文件的。应用程序编译的时候raw目录下的资源文件会在R类中生成索引res/raw与assets的比较相同点:都是原创 2016-11-07 10:14:17 · 1647 阅读 · 0 评论 -
WebView你所不知道的细节
WebView你所不知道的细节 WebView的实现主要依靠WebView和WebSettings这两个类来实现。WebView提供容器,WebSetting设置WebView支持的属性。WebView使用过程中需要注意的地方1、在实例化WebView的时候尽量不要使用当前Activity的引用。用代码New一个WebView而不是在XML中静态写入。 我曾经看到有个哥们利用LeakCana原创 2016-10-26 14:40:56 · 1672 阅读 · 0 评论 -
Android Studio中导入v4,v7和recyclerview-v7包的方法
概述 Android Studio中新建工程中会默认导入v7的包,即在gradle中默认配置了com.android.support:appcompat-v7:x.x.x的依赖。但是不会默认为我们配置v4和recyclerview-v7包,如果项目中用到这两个包,需要我们手动在gradle中配置这两个包的依赖。下面介绍一下配置方法。配置方法直接上图: 第一步: 第二步: 第三步:原创 2016-11-04 15:23:59 · 25710 阅读 · 6 评论 -
ViewPager + GridView实现GridView分页
概述 通过ViewPager实现GridView的分页实现 ViewPager通过设置PagerAdapter实现分页。每一页的布局是一个GridView。GridView通过设置自己adapter渲染GridView。 ViewPager:分页器。 GridViewPageAdapter:继承自PagerAdapter。ViewPager的适配器。 GridView原创 2016-11-04 14:37:07 · 3619 阅读 · 4 评论 -
ListView、GridView的通用型adapter
概述 本篇主要是基于之前的通用型adapter的调整。通用型的adapter中的context不再通过传入的方式进行。而是直接使用application。同时讲ViewHolder这个内部类抽取出来,不再放在通用adapter中。通用型adapter的使用在ListView上的使用 ListView布局,ListView的adapter不再赘述,直接看代码:ViewHolder代码:原创 2016-10-27 17:21:41 · 766 阅读 · 0 评论 -
Android之图片旋转
我们在开发过程中,利用app通过API去调用系统相机拍照的时候,不同的机型有时候拍出来的图片角度不对,被旋转了90°或者180°。例如三星的S4,在调用其相机拍照的时候,拍出来的照片就旋转了90℃或者是270℃。这不是我们想要的,遇到这种情况不得不手动将拍出来的照片旋转一定的角度。下面就大家提供关于图片旋转的方法。图片旋转算法:/** * 读取图像的旋转度 * @par原创 2016-04-18 09:35:02 · 1535 阅读 · 0 评论 -
Android之常见的图片压缩算法
有时候我们在日常开发过程中,由于项目需求,需要上传图片,例如上传头像等等。但是有时候,由于原图过大我们又不能让用户上传原图,需要对图片的进行压缩,才能上传。这里为大家提供一些常用的图片压缩算法,帮助大家在日常开发过程中解决图片上传时,图片压缩的问题。上一篇的博文http://blog.youkuaiyun.com/loveyaozu/article/details/51160482中其实已经为大家提供了图片的原创 2016-04-18 09:28:19 · 2185 阅读 · 0 评论 -
Android之下拉与上拉刷新
转载请注明出处:Android日常开发中,对于下拉与上拉刷新控件的使用非常之频繁。一般都会采用第三方库,但是下拉刷新做到简单优雅并不是太多,甚至有的兼容性都存在问题。这个是不能接受的。最近在github上面看到一位哥们提供的下拉刷新的库非常不错,非常简洁。所以今天把它推荐给大家,供大家日常开发使用。文章结尾会给大家提供Demo供各位下载参考使用。Demo中一共提供四种下拉/上拉刷新。Lis原创 2016-04-25 11:33:12 · 5356 阅读 · 0 评论 -
Android杂谈之网络实时监测
Android监测网络状态分三步进行1.定义一个广播接收者private BroadcastReceiver myNetReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {原创 2015-09-01 21:34:20 · 705 阅读 · 0 评论 -
Android杂谈之延时任务
下面是三种方法:一、线程1. new Thread(new Runnable(){ 2. public void run(){ 3. Thread.sleep(XXXX); 4. handler.sendMessage();//告诉主线程执行任务 5. }原创 2016-01-14 13:11:19 · 808 阅读 · 0 评论 -
Android杂谈之Android数据存储方式
Android中常见的数据存储方式有5种:1 使用SharedPreferences存储数据2 文件存储数据3 SQLite数据库存储数据4 使用ContentProvider存储数据5 网络存储数据第一种: 使用SharedPreferences存储数据 适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配原创 2016-02-15 21:44:39 · 632 阅读 · 0 评论 -
Android杂谈之获取sdcard信息
//获取sd的信息 File file = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(file.getPath()); long blockSize = stat.getBlockSize();//获取每个Block的大小 long totalBlocks = stat.getBl原创 2016-02-15 22:06:22 · 538 阅读 · 0 评论 -
Android杂谈之Handler与timer及TimerTask结合实现定时任务
Handler与timer及TimerTask结合可以很简单地实现定时任务1. 定义定时器、定时器任务及Handler句柄private final Timer timer = new Timer(); private TimerTask task; Handler handler = new Handler() { @Override public v原创 2016-02-18 09:49:11 · 1555 阅读 · 0 评论 -
java中int类型和byte[]数组之间的转换
int和byte[]之间的转换用的比较多的情况是在网络编程中,socket在传输过程中多以byte[]的形式出现int转byte[]/** * int转byte数组 * * @param n * @return */ private static byte[] intToByteLH(int n) { byte[] b = new byte[4]; b[0]原创 2016-02-17 11:07:19 · 747 阅读 · 0 评论 -
android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java。目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、ParcelUtils、RandomUtils、ArrayUtils、ImageU转载 2015-10-09 23:12:39 · 474 阅读 · 0 评论 -
GitHub上面非常受欢迎的android开源项目
GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上。更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。为此,优快云特整理了在GitHub平台上最受欢迎的Android及iOS开源项目,以飨开发者。下面,就让我们一起来看看,在GitHub平台上,究竟有哪些Android开源转载 2015-10-08 21:32:12 · 1392 阅读 · 0 评论 -
Android Fragment 真正的完全解析(上)
自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~本篇博客力求为大家说明Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态的使用Fragment,Fragment回退栈,Fragment事务;以及Fragment的一些特殊用途,例如:没有布局的Fr转载 2015-08-14 16:13:52 · 703 阅读 · 0 评论