
Android进阶
uniquemei
用心做事、积极向上、简单生活
展开
-
Android图片压缩(质量压缩和尺寸压缩)
在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可用于生成缩略图。 两种方法都实装在了我的项目中,结果却发现在质量压缩的模块中,本来1.9M的图片压缩后反而变成3M多了,很是奇怪,再做了进一步调查终于知道原因了转载 2016-09-12 13:53:16 · 745 阅读 · 0 评论 -
用WebView加载Html代码片段
<imgalign="absmiddle"src="https://img.alicdn.com/imgextra/i4/268451883/TB2ZcXxbygSXeFjy0FcXXahAXXa_!!268451883.jpg"class="img-ks-lazyload"/><imgalign="absmiddle"src="https://img.alicdn.com/imgextra/i4原创 2017-03-10 18:31:46 · 2554 阅读 · 2 评论 -
根据url下载apk
首先我们开看一下效果图:首先我来说一下,实现这个效果的整体思路: 自定义一个dialog,当有新版的时候,弹出这个dialog,当点击立即更新时,去下载apk。一、我们首先需要自定义一个dialogpublic class VersionDialog extends Dialog { private int layoutRes;//布局文件 private Context mCtx;原创 2016-11-18 18:14:27 · 4749 阅读 · 0 评论 -
Android设计模式-----观察者模式
观察者模式又叫订阅—发布模式,它的主要作用就是解耦,将观察者和被观察者解耦,使它们的依赖性变的更小。在这个模式中主要就是被观察者通知所有观察者发生改变,及时的更新。Listview的notifyDataSetChanged()改变界面、BroadcastRecevier也是运用此设计模式。角色介绍Subject:抽象主题,被观察者(Observable)的角色,抽象主题角色把所有观察者对象的引用保存原创 2017-05-04 15:50:11 · 339 阅读 · 0 评论 -
Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
转载自:http://blog.youkuaiyun.com/guolin_blog/article/details/53939176在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API。还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),Glide的基本用法 。在多数情况下,我们想要在界面上加载并展示一张图片只需要一行转载 2017-04-23 11:31:03 · 1044 阅读 · 0 评论 -
Android 6.0: 动态权限管理的解决方案
转载自:http://blog.youkuaiyun.com/caroline_wendy/article/details/50587230Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限. 时代总是不断发展, 程序总是以人为本, 让我们为应用添加动态权限转载 2017-04-23 15:42:27 · 734 阅读 · 0 评论 -
Android Service完全解析,关于服务你所需知道的一切(上)
转载自:http://blog.youkuaiyun.com/guolin_blog/article/details/11952435相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了。Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要转载 2017-04-27 19:58:44 · 404 阅读 · 0 评论 -
Retrofit用法详解
转载自:http://blog.youkuaiyun.com/duanyy1990/article/details/52139294一、 简介Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求,其源码详见OkHttp Github。首先先来看一个完整Ge转载 2017-05-20 16:46:39 · 556 阅读 · 0 评论 -
自定义控件其实很简单5/12
转载自:From AigeStudio(http://blog.youkuaiyun.com/aigestudio)Power by Aige 侵权必究!最近龙体欠安,很多任务都堆着,虽说如此,依然没有停下学习的步伐,虽然偶尔还会有点头痛,但是孤依旧在学习……自赞一个~ 在1/3中我们结束了全部的Paint方法学习还略带地说了下Matri的简单用法,这两节呢,我们将甩掉第二个陌生又熟悉的情妇:Canvas。C转载 2017-06-06 17:03:31 · 503 阅读 · 0 评论 -
Android中级篇之Fresco-加载图片基础[详细图解Fresco的使用
转载自:http://blog.youkuaiyun.com/wyb112233/article/details/49637685Fresco简单的使用—SimpleDraweeView百学须先立志—学前须知:在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该呈现正在加载时的图像,当图片加载失败时应该呈现图片加载时的图像,当我们重新加载这张图片时转载 2017-09-13 16:14:39 · 320 阅读 · 0 评论 -
安卓加载webView视频页面,退出后还有声音
做项目的时候遇到一个问题,就是安卓用webView加载视频的页面,销毁当前页面后,还是能听到视频播放的声音,以此来记录解决问题的方案。尝试过在onDestroy()方法中,调用webView.destroy()方法,销毁它,但是没效果。参考了另外方法解决的,首先说一下产生这样现象的原因是:在加载网页播放音频时,html5的audio/video 标签将获取系统播放音频的焦点(类似将系统音频...原创 2018-09-07 16:55:32 · 2190 阅读 · 0 评论 -
安卓如何进行权限控制
当利用drozer检测到安卓应用组件信息暴露时,我们如何解决?一、组件不需要与其他数据共享数据或者交互AndroidMainfest.xml配置文件中将该组件设置为exported=false二、组件需要与其他数据共享数据或者交互当组件需要与其他数据共享数据或者交互时,可以进行权限控制。例如:(1)在AndroidMainfest.xml配置文件中,自定义一种权限: ...原创 2019-04-15 09:45:07 · 1269 阅读 · 0 评论 -
Android集成融云实现聊天功能
在项目中如何集成融云SDK,我就不在详细说了,具体配置可以在官网查看,实现聊天的功能,集成融云 IM 界面组件IMKit和融云 IM 通讯能力库IMLib既可,下面我们说一下,集成组件组件成功以后,如何实现聊天的功能。一、首先在Application的oncreate()方法里进行初始化RongIM.init(this);二、用token发送请求连接融云服务器一般在登录的时候,接...原创 2019-04-28 17:13:56 · 2581 阅读 · 7 评论 -
viewPager+Fragment踩过的坑
最近由于项目需求,需要做问卷调查功能,点击上一题和下一题可以切换题目,做完第二道题目需要发网络请求,第三题是根据第二题的选项显示不同的题目,首先我想到的技术路线是:viewPager+fragment,由此实现,在此记录一下踩过的坑。原创 2019-07-02 15:41:45 · 1075 阅读 · 0 评论 -
检验手机SD卡是否存在,确定新文件夹的位置
一、首先,我们要检测手机内是否存在sd卡 public static boolean checkSdCard() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //sd卡可用 return true; }原创 2017-02-27 17:09:05 · 2267 阅读 · 0 评论 -
根据屏幕大小设置显示图片的大小(二)
首先,我们来看一下效果图在grideView中每行显示两个item,如何根据不同手机设置图片的高、宽,让客户看起来舒服。首先,我设置了item占屏幕的1/2,图片占屏幕的1/3,在adapter里设置大小,直接上代码public MainGrideAdapter(Context context, List<GoodsBean> mData) { this.mData = mData;原创 2017-03-02 18:14:04 · 2309 阅读 · 0 评论 -
根据屏幕的尺寸决定图片的显示大小
在app中我们一般都会下载图片,那么我们如何决定图片的大小呢,给图片固定一样的高度、宽度是不合理的,那么我们需要根据屏幕的尺寸来决定图片的大小。首先,我们需要计算屏幕尺寸,我们可以写一个工具类,用的时候直接调用。public class ImageSizeUtil { public static SharePreferenceUtil spUtil; public static voi原创 2017-02-20 14:18:04 · 4395 阅读 · 0 评论 -
定义全局的Context和定义自己的打印日志
一、全局获取Context的技巧在某些情况下,获取Context并非是那么容易的一件事,有时候还是挺伤脑筋的,不过不用担心,下面我们就来学习一种技巧,让你的项目在任何的地方能够轻松获取Context。Android提供了一个Application类,每当应用程序启动的时候,系统会自动将这个类进行初始化,我们就可以定制一个自己的Application类,一便于管理程序内一些全局的状态信息,比如说全局C原创 2016-09-02 17:08:24 · 883 阅读 · 0 评论 -
pull和sax解析xml文件
/*** * pull解析 **/ public void parseXMLWithPull(String xmlData) { try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser par原创 2016-08-31 11:48:35 · 396 阅读 · 0 评论 -
后台执行的定时任务
在后台实现定时任务,我们可以用Alarm机制,开启服务来实现。首先来介绍一下Alarm机制,它主要是借助了AlarmManager类来实现的。这个类和NotificationManager有点类似,都是通过调用Context的getSystemService()方法来获取实例的,只是这里需要传入的参数是Contex_ALARM_SERVICE。因此,获取一个AlarmManager的实例就可以写成:原创 2016-08-30 10:02:45 · 1983 阅读 · 0 评论 -
bitmap的六种压缩方式,图片压缩
转载自:http://blog.youkuaiyun.com/harryweasley/article/details/51955467android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数以下是图片的压缩格式:其中,A代表透明度;R代表红色;G代表绿色;B代表蓝色。A转载 2016-09-18 13:41:01 · 4567 阅读 · 0 评论 -
EventBus使用详解(二)——EventBus使用进阶
相关文章:1、《EventBus使用详解(一)——初步使用EventBus》2、《EventBus使用详解(二)——EventBus使用进阶》 一、概述 前一篇给大家装简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是:1、onEvent 2、onEventMainThread 3、onEventBackgro转载 2016-09-18 14:34:52 · 353 阅读 · 0 评论 -
EventBus使用详解(一)——初步使用EventBus
转载自:http://blog.youkuaiyun.com/harvic880925/article/details/40660137 相关文章:1、《EventBus使用详解(一)——初步使用EventBus》2、《EventBus使用详解(二)——EventBus使用进阶》一、概述 EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,Broa转载 2016-09-18 14:24:48 · 362 阅读 · 0 评论 -
android的Environment类
转载自:http://www.2cto.com/kf/201408/327215.htmlAndroid应用开发中,常使用Environment类去获取外部存储目录,在访问外部存储之前一定要先判断外部存储是否已经是可使用(已挂载&可使用)状态, 并且需要在AndroidManifest.xml文件中添加外部存储读和写的权限。Environment类中提供了几个静态常量用于标识外部存储的状态,这些状转载 2016-09-18 17:07:40 · 317 阅读 · 0 评论 -
ListView嵌套ListView
在项目开发当中,我们总是会遇到这样的需求:在list表单中,它的子item也会list,比如这个效果图那么,我们如何来实现呢?第一个种思路:我们将它看成一个实体类,然后在adapter中当前的item和下一个item的店铺名字进行匹配,如果店铺名字一致,我们就控制店铺名字和欠款不显示,反之,则显示。这个比较容易实现,我就不进行代码展示了。第二种思路:listView嵌套listView,我们分成两个原创 2016-11-07 18:33:47 · 760 阅读 · 0 评论 -
ExpandableList的用法
public class ShoppingCarNewAdapter extends BaseExpandableListAdapter { private Context mCtx; private ArrayList<ShopcarParentBean> shopcarList = new ArrayList<ShopcarParentBean>(); private on原创 2016-11-14 17:15:44 · 435 阅读 · 0 评论 -
checkBox多选时,重写hasCode()方法和equal()方法对实体类的增加和移除
以前我们的需求是:当我们对实体类选中checkBox时,加入list里执行add()方法,取消时,则在list移除,执行remove()方法,它们操作的是同一个实体对象。 现在我们的需求是:我们选中checkBox时,取它的部分属性加入另外的实体对象,没选中则移除。一、在adapter里定义接口,在activity里实现接口setItemSelect();private Set<OrderDest原创 2016-10-29 16:10:58 · 590 阅读 · 0 评论 -
Glide 入门到精通之六——缓存基础
转载自:http://blog.youkuaiyun.com/xx326664162/article/details/50963151缓存基础在 Android App 中必须去做的是一个很好的实现图片加载组件,尝试去减少网络请求。Glide 在这里并没有什么不同。Glide 通过使用默认的内存和磁环缓存去避免不必要的网络请求。我们将在后面的博客中去详细的查看实现细节。如果你等不到那个时候,通过浏览官方文档这个转载 2016-12-12 11:47:27 · 314 阅读 · 0 评论 -
Google推荐的图片加载库Glide介绍
英文原文 Introduction to Glide, Image Loader Library for Android, recommended by Google 首发地址 http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2650.html 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载转载 2016-12-05 17:40:20 · 323 阅读 · 0 评论 -
Glide的简单使用
Glide是谷歌推出的加载图片的,我通过查找资料来记录一下如何使用glide。首先,我们配置一些基本设置public class MyGlideConfig implements GlideModule { //设置 @Override public void applyOptions(Context context, GlideBuilder builder) {原创 2017-02-27 18:27:40 · 339 阅读 · 0 评论 -
SparseArray浅析
HashMap是java里比较常用的一个集合类,我们一般用来缓存一些处理后的结果。但当你做一个Android项目时,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告。意思是说Map已经不用了,使用SparseArray代替,以获取更好性能。为什么用SparseArray呢,单从字面意思,SparseArray就是稀疏数组(参见 http://hi....转载 2019-08-12 16:45:39 · 377 阅读 · 0 评论