- 博客(20)
- 资源 (64)
- 收藏
- 关注
原创 Android集成友盟推送
概述之前我们研究过极光推送,感兴趣的朋友可以看下Android集成极光推送,友盟推送也是用的比较多的,当然也要研究一下了。官网地址如下 友盟官网地址集成登录成功以后,我们选择自己需要的服务 可以看到,我已经创建好了一个应用,如果你想创建新的,点击右边添加新应用,然后填写信息 填写成功后,出现下面的页面 接下来就是去下载SDK了。下载成功之后解压,目录如下 我们这里只关注最后两个,分别是De
2016-07-28 15:03:21 1013
原创 Android集成极光推送
概述推送是现在大部分应用都拥有的一项功能,使用推送的目的就是为了让客户端接收到最新的消息以及提醒等,今天我们就来学习一下目前用的比较广泛的极光推送。集成过程首先进入极光推送官网,注册并且登录帐号,地址如下极光推送官网登录成功后,会跳到创建应用界面此时因为还没有应用,我们点击创建一个新的应用,接下来会跳到填写应用信息页面 我们填上比较重要的两项,应用名称和包名,其他不是必填的我们先不管,补充完信息后
2016-07-27 10:33:28 5589 1
转载 Android dex分包方案以及热补丁修复
下面给出几篇这方面文章的连接,方便学习 Android dex分包方案安卓App热补丁动态修复技术介绍
2016-07-26 10:18:33 613
原创 Android 5.0 部分新特性学习
首先要说明,这是5.0的新特性,运行在版本比较低的系统上会无法促互现预期效果甚至崩溃的情况。1.裁剪<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:orienta
2016-07-25 15:50:43 688
原创 开源项目PullToZoomView使用
public class MainActivity extends AppCompatActivity { private List<String> datas; private RecyclerView recyclerView; private CustomScrollView scrollView; private RelativeLayout relative
2016-07-22 17:20:40 752
原创 开源项目Baby学习
先看一下项目的效果项目结构项目使用了MVP架构进行开发,同时使用了依赖注入框架Dagger2,RxJava等用到的开源项目 EasyImage recyclerview-animatorsFABProgressCircleSweet Alert Dialog
2016-07-19 16:38:30 344
原创 自定义ViewPager指示器
效果代码public class ViewPagerIndicator extends LinearLayout { private Paint paint; private Context mContext; private Path path; private int mTriangleWidth; private int mTriangleHeight;
2016-07-18 17:26:25 515
原创 Dagger2使用简介
概述Dagger2 是一款使用在Java和Android上的依赖注入的一个类库。使用配置环境 在module的gradle文件中做如下配置apply plugin: 'com.neenbedankt.android-apt'apply plugin: 'me.tatarka.retrolambda'compileOptions { sourceCompatibility
2016-07-13 16:03:34 466
原创 Retrofit网络框架搭建
概述Retrofit与RxJava结合起来用的比较多,现在我们一起来搭建一个基于Retrofit和RxJava的框架,方便以后的使用,搭建框架以前我们需要引入相应的库引用地址,如下所示: 代码假设我们的项目名称为APP,我们需要写三个文件,首先是配置Retrofitpublic class AppRetrofit { private final Retrofit mRetrofit;
2016-07-13 10:12:26 461
原创 如何判断应用被强杀以及解决出现的空指针问题
判断应用被强杀在Application中定义一个静态变量,给一个初始值,然后在闪屏页面为这个变量重新赋值,接下来闪屏页面会跳转到主页面,我们在主页面对这个值进行判断,如果变量的值是初始值,则说明应用被强杀了,接下来看看相关代码public class MyApp extends Application { public static int CODE = -1; public My
2016-07-12 10:31:36 3352 2
原创 Android开发艺术探索读书笔记(第14章 JNI和NDK编程)
NDK开发流程1.下载并配置NDK 2.创建Android项目,并声明所需的native方法 3.实现native方法,代码位置在jni目录下,然后创建两个文件,Android.mk和Application.mk,Android.mk主要指定模块名和源文件等信息,Application.mk常用的配置项是APP_ABI,表示CPU架构平台的类型。 4.切换到ni父目录,通过ndk-build命
2016-07-11 15:15:06 552
原创 Android开发艺术探索读书笔记(第12章 Bitmap的加载和Cache)
Bitmap的加载设置inSampleSize,当此值为1时,采样后的图片大小为原始大小。 当小于1时,作用相当与1,inSampleSize必须是大于1的整数图片才会有缩小的效果。另外inSampleSize应该是2的倍数。如果不是,系统会向下取整。 缓存LruCache 内部采用LinkedHashMap以强引用的方式存储缓存对象。另外Lrucahce是线程安全的
2016-07-08 12:15:27 458
原创 Android开发艺术探索读书笔记(第11章 Android的线程和线程池)
AsyncTaskAsyncTask不适合进行特别耗时的操作,耗时操作建议使用线程池。 AsyncTask中有两个线程池,SerialExcutor和THREAD_POOL_EXCUTOR,前者用于任务的排队,后者用于真正执行任务HandlerThreadHandlerThread的run方法中创建了Looper和消息队列,这样在HandlerThread中我们就可以使用Handler来发送消息。
2016-07-07 14:20:16 428
原创 Android开发艺术探索读书笔记(第10章 消息机制)
为什么系统不对UI访问加上锁机制,原因有两个: 1.加锁会导致UI访问逻辑变得复杂 2.锁机制会降低UI访问效率,因为锁机制会阻塞某些线程执行。ThreadLocal的工作原理 线程内部的一个数据存储类,在指定的线程中存储数据,其他线程无法获取到数据。原理:不同线程访问同一个ThreadLocal的get方法时,ThreadLocal会从各自的线程中取出一个数组,然后再从数组中根据当前Thre
2016-07-07 10:02:07 357
原创 Android开发艺术探索读书笔记(第7章 动画)
给Fragment设置切换动画 FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.setCustomAnimations(int enter,int exit);
2016-07-05 17:51:44 357
原创 Android开发艺术探索读书笔记(第5章 RemoteView)
RemoteView的作用是在其他进程中显示并更新view界面。 大量的IPC操作会影响效率,为了解决这个问题,系统并没有通过Binder去直接支持View的跨进程访问,而是提供了一个Action的概念,Action代表一个view的操作。系统首先将view操作封装成Action对象并将这些对象跨进成传输到远程进程。接着在远程进程执行Action的具体操作。在我们的应用中每调用一次set方法,Re
2016-07-05 09:49:33 628
原创 Android开发艺术探索读书笔记(第4章 View的工作原理)
1.MeasureSpec通过将SpecMode和SpecSize打包成一个int值来避免过多的对象内存分配。 2.对于DecorView,其MeasureSpec由窗口的尺寸和自身的LayoutParams决定。手动对view进行测量需要根据view的LayoutParams分情况 match_parent 无法测量,因为不知道parentSize 固定宽高 wrap_content
2016-07-04 15:56:00 256
原创 Android开发艺术探索读书笔记(第3章 View的事件体系)
3.5 View的滑动冲突如何根据是水平还是竖直滑动来判断到底由谁来拦截事件。可以根据水平方向和竖直方向的距离差,也可以根据水平方向和竖直方向的速度来判断。解决方式 1.外部拦截法 点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,不需要此事件就不拦截。外部拦截法需要重写父类的onInterceptTouchEvent方法。还要注意,在ACTION_DOWN里面返回false,即不拦
2016-07-04 11:16:41 451
原创 Android开发艺术探索读书笔记(第2章 IPC机制)
1.Message中的字段obj在进程间通信的时候,仅仅是系统提供的实现了Parcelable接口的对象才能通过它来传输。我们自定义的Parcelable对象是无法通过obj字段进行传输,这时候可以考虑使用Bundle.用法如下 private Handler handler = new Handler(){ @Override public void handl
2016-07-01 14:21:00 523
HexEditor.dll
2020-06-12
Android热修复实现
2018-06-22
极光推送Demo
2016-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人