自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (2)
  • 收藏
  • 关注

原创 android 打开系统程序 显示系统图片与视频(用于备忘)

转载请标明出处。打开相册和视频跳转到图片与视频显示intent = new Intent(Intent.ACTION_VIEW);//图片和视频intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//等价于intent.setData(Uri.parse("content://media/external/images/media"));//由log输出可以看到: MediaStore.Images.Media.EXTE

2021-06-01 15:18:39 14399 1

原创 Android 闯关

欢迎来到闯关模式,只要真正掌握了我列出的所有关卡,那么你就相当于高级水平了。基本上相当于阿里p6级别,一般的小公司leader的水平(技术上)。除了了解具体知识和内容外,我还会在每关布置作业题,大家可以写代码实践或者写文章输出,加深纸上觉来终觉浅,绝知此事要躬行的印象。这样才能转化成你的知识。完成后,可以在星球打卡,标签闯关打卡 -------------第1关:动画(建议学习时间:3天) 关键知...

2019-11-11 17:23:13 302

原创 androoid 渐变背景动画实现

在安卓里面,动画的背景色渐变(比如又红色变为蓝色)是依靠属性动画来完成的,属性动画大部分情况下是来实现View的运动动画的,因为View的背景也是View的属性之一,所以属性动画自然也就可以让view的背景产生渐变的效果,代码如下: View v = ...;//实例化一个Viewprivate static final int RED = 0xffFF8080;private st...

2018-10-14 07:16:56 261

原创 Android高级进阶书籍推荐

中级进阶推荐看一下以下这几本书:《Android从入门到精通(附光盘)》 明日科技 编《第一行代码2 Android(第二版)》 郭霖 著《Android开发进阶 从小工到专家 》何红辉 著《Android进阶之光 》刘望舒 著《Android开发艺术探索》 任玉刚 著《Android群英传》 徐宜生 著《疯狂Android讲义 》李刚 著Android高级进阶设计模式有关...

2018-08-31 13:55:26 3001 1

原创 Android图片压缩方法

android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数以下是图片的压缩格式:其中,A代表透明度;R代表红色;G代表绿色;B代表蓝色。ALPHA_8 表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有颜色,只有透明度 ARGB_4444 表示1...

2018-03-22 16:29:05 262

原创 App性能优化小建议

导语安卓大军浩浩荡荡,发展已近十个年头,技术优化日异月新,如今Android 8.0 Oreo 都发布了,Android系统性能已经非常流畅了。但是,到了各大厂商手里,改源码自定系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰...

2018-03-16 11:50:28 1595

原创 Gc垃圾回收算法总结

Java虚拟机(JVM)导语:     JVM(Java Virtual Machine)即Java虚拟机,它可以通过类加载器把Class文件加载到自己运行时内存中去执行的虚拟机。虚拟机是运行在操作系统中的,而进程又是操作系统的执行单位,所以当java虚拟机运行的时候,它就是操作系统中的进程实例单位,当它没运行时,可以把它叫做程序。下图是我们Java开发中工作流程,首先,将我们的源代码.java通...

2018-03-16 11:30:52 309

原创 Gc回收机制和回收算法解析

前言GC(Garbage Collection),和面向对象一样是java语言的一大特性之一,有了它,不用再像c/c++那样麻烦且频繁地free()和delete()。垃圾回收机制主要作用于java堆(Heap),也就是jvm用于存放对象实例的地方,所以很多时候我们也把java堆成为GC堆。Java的内存管理包括内存分配和内存回收。这两方面工作都是由JVM自动完成的,虽然降低了Java程序员的学习...

2018-03-16 11:24:35 1466 1

原创 hashmap排序问题

用的最多的HashMap,不保证映射的顺序,特别是它不保证该顺序恒久不变。LinkedHashMap,维持元素的插入顺序。TreeMap中有一个传入比较器的构造函数, Map中的元素可按此比较器进行排序。  以上3个知识点,前2个作为复习,最后一个才是本次使用的重点。要想改变TreeMap的默认比较次序,我们可以在其构造函数中传入一个自己的比较器。TreeMap的比较器构造函数如下: publi...

2018-03-14 16:50:35 788 1

原创 Java 查找两个集合中的相同元素和不同元素

1简单元素的查找一、找到2个集合中相同和不同的元素本文分享的示例代码实现提取2个集合中相同和不同的元素此处需要使用Collection集合所提供的一个方法:removeAll(Cellection list),removeAll方法用于从列表中移除指定collection中包含的所有元素。语法 removeAll(Collection<?> c)c:包含从列表中移除元素的collect...

2018-03-13 10:58:11 39231 3

原创 Eventbus接不到消息的处理办法

 最近积累了好多问题和学习记录知识,但是最近公司项目实在太忙,抽不开身,后面有时间尽量都补上,今天先记录一个遇到的小问题:eventbus无法接收到消息我仔细查看了消息体和订阅方法,都没找到问题,那么应该是我订阅注册过程的问题了,经过log日志打印终于找到了问题所在:eventbus普通的订阅事件,即eventbus.getDefault().post(xxx)方法必须是在订阅后发送消息才可接收到...

2018-03-04 22:24:50 3238 1

原创 HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入

2017-12-07 16:35:56 134

原创 java中的WeakReference

java语言中为对象的引用分为了四个级别,分别为 强引用 、软引用、弱引用、虚引用。本文只针对java中的弱引用进行一些分析,如有出入还请多指正。在分析弱引用之前,先阐述一个概念:什么是对象可到达和对象不可到达状态。其实很简单,我举个例子:现在有如下两个类class A class B,在JVM上生成他们两个类的实例分别为 instance a  instance b有如下表达

2017-09-14 11:56:37 219

原创 Android7.0 7.1 popupwindow showAsDropDown 显示异常解决办法

Android7.0 popupwindow showAsDropDown在屏幕上方弹出解决方法,通过版本控制解决,这属于Android7.0代码的bug新增:7.1版本问题修复。public static void showAsDropDown(PopupWindow pw, View anchor, int xoff, int yoff) { if (Build

2017-09-12 17:34:52 851 1

原创 WebView加载网页不显示图片解决办法

于大家来讲WebView肯定很熟悉,因为我们在日常开发中经常用到它。所以对于它的一些基本用法我就不在这啰嗦了,直接进入正题。我遇到的问题就是在使用WebView加载网页的时候图片不显示(我手机系统是5.1.1),当时出现这个问题我就想当然的以为,是不是给WebView少设置的什么东西。然后百度一下: mWebview.getSettings().setJavaSc

2017-09-12 11:13:44 4738

原创 android 7.0 适配

项目运行两个礼拜了,相机也在7.0以下运行的完美,突然早上同事拿他的7.0手机给我说 这是一个大bug.我一看调用相机直接崩溃。报的错误如下图:接着我以为是我的文件路径错误,找了老半天没发现问题,仔细想想不太可能了。于是乎,开始求助各大网友了。解决方案:1、(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限。不用修改原有代码,在Applicati

2017-08-28 16:24:42 707

原创 Android GridView设置item的高度与宽度相等、GridView条目宽高相同

自定义View,继承RelativeLayout或者LinearLayout,重写onMeasure()方法,代码如下:public class SquareLayout extends RelativeLayout { public SquareLayout(Context context, AttributeSet attrs, int defStyle) { s

2017-08-28 16:14:52 2215

原创 java常用23种设计模式

一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

2017-07-28 11:16:23 278

原创 Android 不依赖activity的全局悬浮窗实现

Android悬浮窗实现 实现基础Android悬浮窗实现使用WindowManager ,WindowManager介绍  通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象。每一个WindowManager对象都和一个特定的 Display绑定。想要获取一个不同的display

2017-07-20 10:01:15 22820 1

原创 Surfaceview的绘制与应用

1.surfaceview与view的区别Android 提供了view进行视图的绘制,可以满足大部分的会图需求,但在有些时候却是心有余而力不足。我们知道,view通过刷新来绘制视图。Android系统通过vsync信号来进行屏幕的绘制。刷新的时间间隔为16毫秒。如果在16毫秒内完成了索要刷新的绘制操作,那么在视觉效果上就不会产生卡顿的感觉。如果逻辑操作过多,频繁刷新就会造成界面的卡顿。 

2017-07-13 16:12:04 276

原创 requestLayout、invalidate与postInvalidate的区别与使用场景分析

这篇文章将详细讲述与view自定义三大工作流程密切相关的两个方法,分别是requestLayout和invalidate,如果对Viwe的三个工作流程不熟悉的读者,可以先看看view的绘制流程。http://blog.csdn.net/qq_28273051/article/details/53992917http://blog.csdn.net/qq_28273051/article

2017-07-13 10:01:36 430308 1

原创 android中invalidate()的自动清屏含义以及屏幕刷新

invalidate()是用来刷新View的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉。 对于屏幕刷新有以下集中情况可以考虑: 1.不使用多线程和双缓冲      这种情况最简单了,一般只是希望在View发生改变时对UI进行重

2017-07-13 09:42:16 1056

原创 Android 单位转换工具

/** * Created by Administrator on 2017/7/10. */public class DisplayUtil { /** * 将px装换成dp,保证尺寸不变 * * @param context * @param pxValue * @return */ public stati

2017-07-10 15:53:15 285

原创 Android 实现滑动的七种方法

1.1  用Layout方法   我们知道,当view在绘制时会调用onlayout方法来设置显示位置。同样也可以通过view的left、top, right,buttom 四个属性来控制view的坐标。每次在ontouchevent的时候,我们都要获取一下触摸点的坐标。 @Override public boolean onTouchEvent(MotionEvent event

2017-07-10 15:31:17 492

原创 Scrollview 嵌套listView 与recycleView 滑动冲突的解决

本来我们用recycview代替了listview之后就很少会遇到scrollview了但是产品需求总是在不断的更新。在时间与技术的探索之下,还是会有一部分兄弟会选择这样的布局,下面我就来说说使用之后遇到的一些坑的解决方案。1 scrollview 签到listview 的解决方案(1)只需在MainActivity中 找到listview 和 scrollview

2017-06-30 14:55:59 1127

原创 fragment 与viewpager预加载的解决 懒加载

在项目中ViewPager和Fragment接口框架已经是处处可见,但是在使用中,我们肯定不希望用户在当前页面时就在前后页面的数据,加入数据量很大,而用户又不愿意左右滑动浏览,那么这时候ViewPager中本来充满善意的预加载就有点令人不爽了。我们能做的就是屏蔽掉ViewPager的预加载机制。虽然ViewPager中提供的有setOffscreenPageLimit()来控制其预加载的数

2017-06-29 13:59:22 410

原创 android 消息机制

Android的消息机制是指handler的运行机制,handler的运行需要底层的messagequeue和loop的支撑。messagequeue的中文翻译是消息队列的意思,顾名思义,它的内存储存了一组信息,以队列的形式,对外提供插入和删除操作。虽然叫消息队列,但是他内部是用单链表的形式来对消息进行储存的。            looper这里可以理解为消息循环。因为messageq

2017-06-29 13:45:55 219

原创 Android使用HttpURLConnection的302重定向问题

HttpURLConnection编程基础原理 在Android中,HttpURLConnection是比较基础的网络编程,因此在入门的时候建议大家学会使用这个编程,有助于大家了解其原理。这里就简单介绍一下,因为我们这篇博客主要解决的问题是如何解决收到结果不是200,--------------而是302重定向问题。使用HttpURLConnection编程原理我们编

2017-06-28 15:03:24 822

原创 Android性能优化的方法

Android作为一种移动设备,它的内存和cup都有了一定的限制。无法做到像pc那样,超大内存和高性能的cpu。这也意味着Android程序不能无限制的使用内存和cpu。过多的使用内存会导致oom,俗称内存溢出。过多的使用cpu资源,则会导致程序变得很卡,甚至出现anr。因此对程序员的要求也就更高了。下面我对Android的优化做一个介绍:1/ 布局优化布局优化的思想很简单

2017-06-26 17:31:19 350

原创 scrollowview 嵌套gridview回到顶部最完美解决

首先在scrolloview中添加如下代码<ScrollView android:id="@+id/scroll_person_fragment" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/bg_gra

2017-05-23 20:08:27 552

原创 在第三方浏览器中打开本地app某个activity 使得app多次启动的解决办法

浏览器打开app启动多次的解决办法

2017-05-17 10:53:35 1070

原创 url打开app

浏览器打开本地app的实现

2017-05-16 19:49:14 686

原创 Acach缓存的实现

主要是减少网络请求的次数

2017-05-16 19:40:57 339

原创 android wifi 网络检测

显示WiFi的监听方式

2017-05-16 19:29:16 579

原创 glide加载圆角图片

圆角图片的加载

2017-05-16 19:19:08 734

原创 viewholder 封装

万能的viewholder

2017-03-02 17:36:36 302

原创 Data Binding Library

Android最新推出了一个官方的数据绑定框架-Data Binding Library。现在github上也有很多三方的数据绑定框架,但是我们为什么要选择官方的呢?恩,答对了。就是因为是官方的,三方的东西说不定什么时候作者一步高兴就停止更新了,官方的就不一样了,我们可以看到它渐渐的稳定起来。好了废话不多说,从这篇博客开始,我们就来了解一下android最新给我们带来的数据绑定框架——Data

2017-01-19 14:33:24 227

原创 理解window和windowmanager

我们来看看用windowmanager添加window的过程mwindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); Button button = new Button(this); button.setText("糖宝"); mlayoutParams = new LayoutParam

2017-01-17 16:06:45 298

原创 如何成为一个优秀的研发人员

做一个产品,不可能一个人完成所有的东西,一个产品的开发到发布都是各个角色合作的。产品经理出交互,视觉来切图,开发者进行开发工作,测试做开发的测试,项目经理控制我们的整体进度和流程。作为一个工程师,你首先需要了解各个角色关心什么。产品和交互关心他们理想中的功能能否被正确的实现;测试关心的是一个开发周期结束以后,提供的测试版本稳定没有bug项目经理关心开发计划确定以后,产品迭代能否按着流程走而

2017-01-17 11:16:44 3176

原创 Android 属性动画

和view动画不同,他的作用对象进行了扩展,属性动画可以对任何对象做动画,甚至可以没有对象。除了对作用对象的扩展以外,他对动画效果也进行了加强。属性动画中有valueanimator,objectanimator,animatorset。通过他们可以实现绚丽的动画。属性动画可以对任何对象进行动画,不仅仅是view,默认时间是300ms ,默认帧率是10ms/帧。其可以达到的效果是在一定时间段内

2017-01-16 16:42:42 396

Android例子源码仿微信朋友圈图片浏览器

这是一款高仿违心的图片浏览器

2017-01-09

高仿扣扣侧边栏

超高级模仿扣扣的侧边栏,可以帮助您更加轻松开发,希望大家来观看及引用

2015-06-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除