- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 Android仿网易云音乐中锁屏后在开锁界面插屏功能
这个功能实现起来应该有多种方式,可以使用WindowManager创建window的方法。 在本文中我们使用开启一个Activity来充当锁屏界面。 实现步骤有以下两步: 一、后台开启一个Service,监听屏幕锁屏广播。 二、当屏幕熄灭,收到广播后,开启充当锁屏界面的Activity。 实现思路就是这么简单,但具体细节需要说说。首先开启Service。Intent service = n
2016-05-18 17:04:09
7830
2
原创 Android中跨进程通信方式之使用AIDL一些小细节
一、使用Binder连接池 当业务模块很多时,需要很多个AIDL,按照之前的方式那么一个AIDL需要创建一个Service,使用很多Service使得应用很重量级。我们只需要一个Service,服务端提供一个queryBinder接口,用来返回当前业务需要的Binder,根据这个Binder可以调用远程方法了。 所以Binder连接池的作用是将每个业务的Binder请求统一转发到一个Servic
2016-05-11 20:24:19
839
原创 Android中跨进程通信方式之使用AIDL进阶篇
本文分析上一篇《Android中跨进程通信方式之使用AIDL》中IUserManager的内部结构。package com.example.aidl;public interface IUserManager extends android.os.IInterface { /** Local-side IPC implementation stub class. */ public
2016-05-11 14:45:02
547
原创 Android中跨进程通信方式之使用AIDL
首先创建一个User.java文件,实现Parcelable接口以用来进程间的对象传递package com.example.aidl;import android.os.Parcel;import android.os.Parcelable;public class User implements Parcelable{ private String username; priv
2016-05-11 13:46:37
432
原创 Android中跨进程通信方式之使用Messenger
服务端MessengerService的process属性指定它的进程跟MainActivity不在一个进程 <service android:name="com.example.activity.MessengerService" android:process="com.example.activity.remote" >
2016-05-10 14:20:42
935
原创 Android中跨进程通信方式之使用文件共享
一、使用Serializable序列化对象import java.io.Serializable;public class User implements Serializable{ private static final long serialVersionUID = 1L; private String username; private String passwor
2016-05-09 21:02:05
1435
原创 Android中跨进程通信方式之使用Bundle
一、开启多进程方式 <activity android:name="com.example.activity.SecondActivity" android:process="com.example.activity.remote"> </activity>process属性指定SecondActivity所在的进程是
2016-05-09 17:06:47
2406
原创 Activity的启动模式
android:launchMode="standard"标准模式,默认情况下Activity的启动模式就是标准模式,以下用ABCD表示四个不同的Activity。 标准模式下,每次启用Activity会为这个Activity产生一个实例,不管该Activity是否已经在当前Activity任务栈中存在。android:launchMode="singleTop"栈顶复用模式。比如当前Activi
2016-05-09 16:23:52
899
2
原创 Activity的生命周期,异常恢复数据
Activity的生命周期正常情况下,Activity第一次启动会执行如下三个方法:onCreat()onStart()onResume()在当前Activity不可见时,比如跳到另一个Activity或者按下home键,当前Activity从onResume()状态依次变为onPause()onStop()
2016-05-09 15:44:31
480
原创 排序算法之堆排序
堆排序是构建最大堆后,将堆顶元素(最大数)与最后一个元素交换,然后将剩下的数重新构建最大堆,再将当前堆中的堆顶元素与最后一个元素交换,直至当前堆中无元素为止。 为了方便表示堆的左右孩子,我们使元素角标从1开始,假如s表示父亲结点,那么左孩子2s,右孩子2s+1 private static void heapSort(int[] a,int n) { //第一次构建最大堆
2016-04-05 12:14:18
299
原创 排序算法之快速排序
快速排序是每次选择锚点,然后将比锚点小的数放到锚点的左边,大的数放到右边。然后递归将锚点左边的数,继续选择锚点,比锚点小的数放到锚点的左边,大的数放到右边。同理递归锚点右边的数。直至剩下一个数为止。由于锚点的选择会影响快速排序的效率,最差情况下,假如锚点左边没有数,那么锚点右边就是整个数组,这样情况下时间复杂度为n*n。为了避免这种情况,我们选择数组中first,mid,last的中位数作为锚点
2016-03-31 22:29:22
294
原创 排序算法之归并排序
归并排序是将数组二分,二分,直至分得的大小为1为止。然后按序合并分开的数组。 private static int[] mergeSort(int a[],int first,int last){ if(first < last){ int mid = (first + last)/2; return merge(mergeSor
2016-03-31 20:32:57
249
原创 排序算法之希尔排序
希尔排序是对直接插入排序的改进。直接插入排序是无距离的比较, 而希尔排序是将数组分距离比较,直到这个距离为1为止。 private static void xierSort(int[] a){ int temp,j; int gap = a.length; do{ gap = gap/3 + 1;
2016-03-30 20:35:04
251
原创 排序算法之直接插入排序
直接插入排序是将数组分成有序和无序两部分,每次将当前未排序的数和有序部分比较,移动有序部分,找到未排序数的插入点。 private static void insertionSort(int[] a, int first, int end) { for (int i = first + 1; i <= end; i++) { int firstUnsor
2016-03-30 17:52:49
412
原创 排序算法之选择排序
选择排序的思想是将数组a[0]和之后的数比较,选择出最小的和a[0]交换,然后忽略a[0],再将a[1]和之后的数比较,选择最小的和a[1]交换,直到a[n-1]和a[n]比较。private static void selectionSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { int sm
2016-03-30 17:42:09
281
原创 排序算法之冒泡排序
冒泡排序是排序算法中入门级算法。 其主要思想是相邻两个数之间两两比较,小的冒泡到上面。 如果有n个元素则比较n-1次,每一轮少比较一次。 private static void bubbleSort(int[] a) { for (int i = 0; i < a.length - 1; i++) { for (int j = a.length -
2016-03-30 17:27:05
269
原创 hashCode散列码
基本数据类型包装类的散列码: byte、char、short等就是转换成int值 long是64位的,而int是32位的,直接转换会丢弃数据。 java中采用value^(value>>32)得到long转换的散列码 举个例子: 10101100 右移四位后00001010 成功将低四位值去除,
2016-01-15 14:48:54
545
原创 机器学习KNN算法原理及实现
KNN->>K近邻算法 已知训练样本的类别,输入新的样本即测试样本,对测试样本进行分类 1、求测试样本跟训练样本的距离 2、找出距离最小的K个测试样本 3、得到这K个测试样本出现最多的类标 4、根据类标分类测试样本。__author__ = 'admin'from numpy import *import operatordef creatDataSet(): group
2016-01-07 19:08:46
646
原创 WebView 的用法
WebView 的用法WebView webView = (WebView) findViewById(R.id.wv_web); progress = (ProgressBar) findViewById(R.id.pb_progress); String url = getIntent().getStringExtra("url"); WebSe
2015-11-07 18:27:22
346
原创 学习心得(三)
ViewPager的指示器,使用ViewPagerIndicator。 滑动事件的处理: 事件:dispatch ->intercept-> ontouch 分发事件的用法: 如果父控件拦截了(intercept retrun true,或者天然就要处理事件)子控件的事件,那么子控件将响应不到事件的传递。这时候可以在子控件dispatch方法中getParent().requestdisal
2015-11-07 12:31:27
313
原创 学习心得(二)
主页面的RadioButton 去调Button:android:button=”@null” 字体居中:android:gravity=”center_horizontal” 上方图片:android:drawableTop 设置drawableTop和text的选择器android:state_checked=”true” ViewPager和RadioGroup互相监听: radi
2015-11-06 22:33:11
355
原创 状态栏沉浸
状态栏沉浸是安卓4.4以上新功能,这里使用github上开源项目,SystemBarTint来实现。 在你的Activity中创建对象并设置颜色 SystemBarTintManager manager = new SystemBarTintManager(this); manager.setNavigationBarTintEnabled(true); manag
2015-11-06 12:58:15
283
原创 学习心得(一)
day01 Splash界面 让一个布局播放一个动画。 动画–>animation 布局配置和代码配置 布局配置:res目录下创建anim文件夹, 多个动画一起播用将动画包起来。 pivotX属性表示当前动画的锚点,%表示相对于自己。相对于自己一定要用到%,比如50%就是自己的中心,100%自己的最大值,0自己的起始值。属性是动画播完后保持播完后的样子。
2015-11-04 22:16:56
288
MySQL-python-1.2.5.win-amd64-py2.7 亲测可用版
2017-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人