自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Simon

人之所以能,是相信能(Android & iOS)

  • 博客(35)
  • 资源 (2)
  • 问答 (3)
  • 收藏
  • 关注

原创 iOS基础知识点 - KVC 与 KVO 理解

KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解。Key-Value Coding (KVC)KVC,即是指NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 a...

2019-10-08 00:17:02 157

原创 EGL介绍与简单GLSurfaceView实现思路

EGL介绍与简单GLSurfaceView实现思路EGL介绍与简单GLSurfaceView实现思路 前言 EGL 什么是EGL 为什么用EGL EGL关键数据类型 EGL的基础用法 如何选择Surface 基础API说明 eglSwapBuffers流程 为什么Whee离屏渲染加水印不需要调用eglSwapBuffer? ...

2019-03-12 16:34:05 1573

原创 EventBus源码阅读记录与原理解析

一、概述EventBus是针对Android优化的发布-订阅事件总线,简化了Android组件间的通信。EventBus以其简单易懂、优雅、开销小等优点而备受欢迎。关于EventBus的基本使用不再详述,网上的资料很多,可以自行学习,或者直接去GitHub上查看基本使用方法。在讲解源码之前,先说一下EventBus需要关注的点 - EventBus...

2019-03-10 21:21:08 179

转载 Android SQLite数据库并发问题的详细描述和解决方案

在我的写android sqlite数据库中遇到了一些异常困扰了我很久。尝试了几种解决方案,找到种我感觉还是较为合理的解决方案。我很高兴把它写出来和大家共享,希望对你有一些帮助。 废话不多说,文章的开始先抛出异常SQLiteDatabaseLockedException: database is locked和java.lang.IllegalStateExceptio...

2019-03-10 18:03:38 640

原创 计算机网络-运输层(一、TCP和UDP的概述与特点)

UDP(用户数据报协议)UDP在传送数据之前不需要先建立连接,远程主机的运输层在接收到UDP报文后也不需要给出任何的答复。下面给出使用UDP协议的应用和应用层协议:域名转换:DNS路由选择协议:RIP网络管理:SNMPIP电话:专用协议流媒体通信:专用协议多播:IGMP特点:1)UDP是无连接的。在发送数据之前不需要建立连接,相应的发送数据结束时也没有连接可...

2019-03-10 00:06:30 808

原创 volatile关键字无法保证线程安全的讨论

讨论之前还是先就内存模型及相关概念进行简单的介绍内存模型: 我们都知道CPU与内存之间有一个高速缓存,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存当中,那么CPU进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据,当运算结束之后,再将高速缓存中的数据刷新到主存当中。 缓存一致性问题: 看如下代码 i =...

2019-03-07 16:30:16 971

原创 Handler源码阅读记录

Handler源码阅读记录 我们从Handler的构造函数开始,一步一步查看Handler的内部源码,看其是如何实现自身的各种功能的。首先从构造函数开始:可以看到Handler在构造函数里最重要的一步是要获取Looper对象,如果没有获取到Looper对象,后面所有的工作都会进行不下去;从后面的代码可以看到,Looper内的消息队列被赋值给了Handler的消息队列,意味着Ha...

2019-02-19 14:09:10 247

原创 AsyncTask源码阅读记录

年后工作稍没那么紧张,重新阅读一些Android源码,以此记录。AsyncTask的整体实现原理可以理解为Handler+线程池。可以看到AsyncTask源码中前面的一部分属性都是为了创建 THREAD_POOL_EXECUTOR 线程池而做准备。在上图的最下面,可以看到定义了一个SerialExecutorl类型的  SERIAL_EXECUTOR通过代码可以看出 Se...

2019-02-18 20:03:01 135

原创 ViewPager的setOnPageChangeListener接口三个方法详解

1.onPageSelected(int position):这个方法有一个参数position,代表哪个页面被选中。当用手指滑动翻页的时候,如果翻动成功了(滑动的距离够长),手指抬起来就会立即执行这个方法,position就是当前滑动到的页面。如果直接setCurrentItem翻页,那position就和setCurrentItem的参数一致,这种情况在onPageScrolled执行方法前就...

2018-08-19 16:02:42 803

原创 Service中调用Toast小记

Toast 显示需要出现在一个线程的消息队列中 public class TestService extends    Service {   private Handler handler;   @Override   public IBinder onBind(Intent intent){     return null;   }       @Override   ...

2018-08-19 16:01:08 889

原创 iOS开发 全局Alert(不依赖ViewController)的两种实现方案详解

开发中遇到这样的需求,需要实现在后台接受到某一事件时无论当前用户处在哪个视图都需要弹出一个Alert.参考了一些网上的资料,加上自己的思考,总结出两种方案:1)对UIWindow进行扩展UIWindow+.h#define UIEventSubtypeMotionShakeNotification @"UIEventSubtypeMotionShakeNotification"...

2018-08-19 15:57:48 2502

原创 Android开发控件-VarietyImageView(百变ImageView,可以根据要求指定哪个角是圆角,哪个角是直角)

 ImageView相信是Android开发人员再熟悉不过的一个控件了,在一般情况下基本的ImageView也都能满足我们的开发需求,但相信大家也都遇到过ImageView无法满足实际需求的情况,这次我就遇到了,先来看下需求:1)可以设置成圆形ImageView2)可以设置成圆角矩形ImageView3)可以根据要求指定哪个角是圆角,哪个角是直角!!!前两个需求相信大多数同学都...

2017-07-21 18:18:19 840

原创 Android开发倒计时-CountDownTimer的使用

Android开发过程中经常会需要用到倒计时的功能,CountDownTimer这个抽象类能很好的帮我们实现,而且相比Timer,CountDownTimer能更灵活的start和cancle,下面来看看使用方法吧!!使用方法:1)定义private CountDownTimer mCountDownTimer =new CountDownTimer(10000,1000) { /...

2017-07-21 16:31:05 359

原创 java实现读取文件底下所有子文件名,并修改文件名

java实现读取文件底下所有子文件名,并修改文件名!

2017-06-20 00:02:29 5770

原创 Android动态权限获取总结

现在Android SDK API Level 都出到25了,市面上搭载Android6.0以上系统的手机占有率越来越高,最近给自己手头上在开发的项目做了些改进,加上了动态权限获取,在这总结下自己的做法:首先当然是来个判断(项目需要用的敏感权限主要是相机和读取手机存储两个权限): private final String[] permissions=new String[]{Mani...

2017-03-28 00:10:23 463

转载 java集合类List/Set/Map的区别和联系

(转载自http://www.cnblogs.com/yuanermen/archive/2009/08/05/1539917.html,方便自己reView)Java集合类List/Set/Map的区别和联系一、Array ,ArraysJava所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。1、效率高,但容量固定且无法动态

2017-03-20 09:04:16 298

原创 代码中的特殊注释-TODO,FIXME,XXX

TODO: + 说明:如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。XXX: + 说明:如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简

2017-03-02 00:21:20 268

转载 Android中BitmapFactory.Options学习

首先BitmapFactory的作用是:Creates Bitmap objects from various sources, including files, streams, and byte-arrays。BitmapFactory.Options用于解码Bitmap时对各种参数的控制,详细参数介绍如下: 1)inJustDecodeBounds  如果将这个值置为tr...

2017-01-21 23:27:34 699

原创 安卓开发之PopupWindow

1)简介PopupWindow是Android上自定义弹出窗口,与AlertDialog相比,PopupWindow更加灵活,能够灵活的指定自定义窗口的显示位置2)用法 PopupWindow的构造函数public PopupWindow(View contentView, int width, int height, boolean focusable)contentV...

2017-01-18 23:10:02 540

转载 安卓开发中Application的作用

What is ApplicationApplication和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并...

2017-01-16 16:26:06 1932

转载 Android Bitmap内存的管理与优化--降低采样率,inSampleSize的算法

public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) { // Raw height and width of image final int height = options.outHeight; fina

2016-11-16 18:12:11 1485

转载 关于WeakReference

在Java里, 当一个对象o被创建时, 它被放在Heap里. 当GC运行的时候, 如果发现没有任何引用指向o, o就会被回收以腾出内存空间. 或者换句话说, 一个对象被回收, 必须满足两个条件: 1)没有任何引用指向它 2)GC被运行.在现实情况写代码的时候, 我们往往通过把所有指向某个对象的referece置空来保证这个对象在下次GC运行的时候被回收 (可以用java -verbose:

2016-11-16 17:43:27 185

转载 安卓网络图片加载框架-Picasso使用教程

Picasso介绍Picasso是Square公司开源的一个Android图形缓存库A powerful image downloading and caching library for Android 一个Android下强大的图片下载缓存库Picasso实现了图片的异步加载,并解决了Android中加载图片时常见的一些问题,它有以下特点:在Adapter中取消了不在视图...

2016-10-10 13:32:33 1460

原创 解决ViewPager高度无法wrap_content问题

直接上解决方法,需要重写ViewPager中的onMeasure方法。 /** * ViewPager wrapContent解决方案 */public class WrapContentHeightViewPager extends ViewPager { /** * Constructor * * @param context the ...

2016-08-26 10:08:15 2980 1

转载 完美解决ViewPager+Fragment二次加载空白问题

ViewPager+Fragment使用的还是比较频繁的,但是当我打开应用第一次进入时很正常,然而第二次进入的时候却显示的是空白,当时感觉很是迷茫,可是仔细一查,原来是第二次加载的时候重复调用了onCreateView()这个方法,重新new了一个pageadapter导致子fragment不显示,问题的解决方法就是在onCreateView()方法里面加入如下代码<code clas...

2016-08-24 00:39:58 3843 3

原创 解决ViewPager预加载问题

研究了网上的方案,经过个人实验,总结较为有效的两种,大家可以根据自己的实际情况考虑选择使用哪种方法:1)使用懒加载机制,所谓懒加载就是利用setUserVisibleHint(boolean isVisibleToUser)方法来判断当前Fragment是否可见,从而判断是否需要加载数据,这里提供一个抽象工具类给大家使用import android.content.Context;...

2016-08-23 16:20:22 1966

原创 ListView加载两种Item样式问题总结

 <span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">原创文章 ,转载请说明出处</span></span><span style="font-family:

2016-08-11 01:50:18 1735

原创 总结今天实现Topbar随屏幕滚动逐渐出现和淡出问题

实现场景:在开发过程中,需要实现初始界面Topbar不显示,当屏幕向下滚动时,Topbar逐步淡现,当屏幕向上滚动时,Topbar逐步淡出和手指向上向下抛动时Topbar对应出现和消失的效果.代码例子使用ListView控件h_rmnr_list在xml文件中将自定义的Topbar的透明度设置为0     android:alpha="0"绑定控件mListView,准备好数据之后...

2016-08-11 01:35:45 755

原创 ViewPager onPageChangeListener接口总结

废话少说,总结一下自己使用ViewPager时a)onPageSelected(int position):position表示当前被选中的页面,当用手指滑动翻页的时候,如果翻动成功了(滑动的距离够长),手指抬起来就会立即执行这个方法,position就是当前滑动到的页面。如果直接setCurrentItem翻页,那position就和setCurrentItem的参数一致,这种情况在onPa

2016-08-09 10:29:37 417

原创 安卓开发中自定义属性枚举值设置(固定属性值)

<strong><span style="font-size:18px;">我们再编写自定义属性的时候,会出现希望自定义的属性只能有几个自己可选的值情况,</span></strong><strong><span style="font-size:18px;">这种情况就需要使用带自定义属性枚举

2016-08-06 10:44:21 2311

转载 Android 中的DisplayMetrics类的用法

Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类:Andorid.util 包下的DisplayMetrics 类提供了一种关于显示...

2016-08-04 22:33:45 247

原创 ImageView保持原图长宽比问题

在安卓的实际开发中,我们使用的图片素材长宽比各不相同,这种时如果我们的ImageView的长宽比如果跟图片素材的长宽比存在差异,则会出现ImageView中有留白的现象,如果想设置图片固定大小,又想保持图片宽高比解决方案如下:1)ImageView的width和height都设为wrap_content 2)设置ImageView的maxWidth和maxHeight ...

2016-08-03 10:07:29 3915

原创 Android开发实现中的“再按一次返回键退出程序”

1 private long clickBackTime = 0; //定义一个long类型的变量用于记录点击返回键的时间 2 3 @Override 4 public boolean onKeyDown(int keyCode, KeyEvent event) { 5 if(keyCode == KeyEvent.KEYCODE_BACK && even...

2016-07-31 21:08:12 185

原创 解决GridLayout API level小于21时平均分配行列的问题

API level 小于21时,如果需要实现各行或个列实现平均行和列,需要导入兼容包,具体步骤如下:1)找到对应module下的build.gradle文件,在denpendencies模块中加入        compile 'com.Android.support:gridlayout-v7:23.0.0'  以导入兼容包 2)在xml文件中,头部加入 xmlns:app="htt...

2016-07-31 21:07:07 628

原创 Fragment中加载ListView问题

Fragment作为Activity的片段,在安卓开发中被使用的频率非常高,同时ListView作为最常用的控件,因此在Fragment中加载ListView也是非常常用的,下面介绍一下具体的Fragment中加载ListView的步骤:1)定义一个继承自ListFragment的Fragment(TestFragment); 2)在xml中,要加载的ListView的id必须设置为 ...

2016-07-31 21:06:03 998

Android开发控件-VarietyImageView(百变ImageView,可以根据要求指定哪个角是圆角,哪个角是直角)

Android开发控件-VarietyImageView(百变ImageView,可以根据要求指定哪个角是圆角,哪个角是直角)

2017-07-21

IOS学习经验

一篇非常好的IOS学习开始经验,值得一看服从耳机哦肉

2015-10-08

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

TA关注的人

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