- 博客(96)
- 收藏
- 关注
原创 一个简单的demo模拟登录过程页面跳转逻辑和双击退出应用
直接上代码APP:public class APP extends Application { public List activityList; private static APP appInstance; @Override public void onCreate() { super.onCreate(); appIn
2017-03-19 22:13:10
1383
原创 Android进程间通信---AIDL
AIDL可以发送基本数据、String、List、Map和实现Parcable接口的对象一、创建AIDL文件和Service文件,目录结构如下:二、AIDL文件// IMyAidlInterface.aidlpackage com.mathias.hb.androidbasicknowledge;// Declare any non-default typ
2017-02-24 17:15:17
1192
原创 CoordinatorLayout + AppBarLayout实现滑动隐藏ToolBar
先看效果 官方推出了实现联动的ViewGroup:CoordinatorLayout ,CoordinatorLayout 实现了NestedScrollingParent接口,CoordinatorLayout 正式因为这个接口才能联动。下图中展示了能联动的View 要使用CoordinatorLayout实现联动,需要他有一个实现了NestedS
2017-01-12 14:57:10
3438
原创 DrawerLayout + NavigationView实现侧滑菜单
实现侧滑菜单有多种方式,如使用SlidingMenu,但使用起来比较繁琐,官方也推出了一个能轻松实现侧滑菜单的View,即DrawerLayout。在Android 5.0中,推出了NavigationView控件,DrawerLayout加上NavigationView,实现侧滑菜单就轻而易举了。 DrawerLayout在使用时要作为顶层布局,其他布局和控件都放在其中,我们来
2017-01-12 11:42:36
817
原创 Android 6.0正常权限、危险权限以及特殊权限
正常权限:ACCESS_LOCATION_EXTRA_COMMANDSACCESS_NETWORK_STATEACCESS_NOTIFICATION_POLICYACCESS_WIFI_STATEBLUETOOTHBLUETOOTH_ADMINBROADCAST_STICKYCHANGE_NETWORK_STATECHANGE_WIFI_MULTICAST_STATECHANGE_WI
2016-12-21 13:06:28
8733
转载 android正则表达式及Pattern Matcher使用
众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大 家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文
2016-12-12 14:26:51
1158
转载 完全掌握Android Data Binding
来源 https://github.com/LyndonChin/MasteringAndroidDataBinding 本教程是跟着 Data Binding Guide 学习过程中得出的一些实践经验,同时修改了官方教程的一些错误,每一个知识点都有对应的源码,争取做到实践与理论相结合。 Data Binding 解决了 Android UI 编程中的一个痛点,
2016-12-12 13:40:40
1922
原创 zxing实现二维码扫描
已解决图片变形问题,实现快速扫描直接上代码第一步,先导入zxing类库和jar包第二步,在layout中添加两个布局capture_activity.xml :扫描界面的布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" andr
2016-11-22 23:10:52
1814
原创 Android studio快捷键总结
以下是Android studio默认的快捷键,安装后没有经过任何修改。如果有更多快捷键,请在评论中写明,方便更博* Alt + Enter 1、导入包,自动修正 2、在某处写了调用一个方法,但这个方法还没声明,在调用的地方使用这个快捷键快熟声明 3、将==修改为!= 4、将==修改为equals()* Alt + Up/Down 快速在方法之间移动
2016-11-18 13:15:37
497
原创 侧滑菜单——SlidingMenu的使用
1、添加SlidingMenu library2、添加侧拉菜单 //1.将activity改为继承SlidingFragmentActivity,这样activity才能去管理侧拉菜单 public class MainActivity extends SlidingFragmentActivity { private SlidingMenu slidingMenu;
2016-11-17 14:43:28
748
转载 Handler机制
为了避免ANR,我们会通常把 耗时操作放在子线程里面去执行,因为子线程不能更新UI,所以当子线程需要更新的UI的时候就需要借助到安卓的消息机制,也就是Handler机制了。 注意:在安卓的世界里面,当 子线程 在执行耗时操作的时候,不是说你的主线程就阻塞在那里等待子线程的完成——也不是调用 Thread.wait()或是Thread.sleep()。安卓采取的方法是,主线程应该为子线程
2016-11-15 14:34:24
763
转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
记得在前面的文章中,我带大家一起从源码的角度分析了Android中View的事件分发机制,相信阅读过的朋友对View的事件分发已经有比较深刻的理解了。还未阅读过的朋友,请先参考Android事件分发机制完全解析,带你从源码的角度彻底理解(上) 。 那么今天我们将继续上次未完成的话题,从源码的角度分析ViewGroup的事件分发。 首先我们来探讨一下,什么是ViewGroup?它
2016-11-08 13:20:22
546
转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
其实我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客开始,就零零散散在好多地方使用到了Android事件分发的知识。也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?为什么图片轮播器里的图片使用Button而不用ImageView?等等……对于这些
2016-11-08 13:08:02
473
原创 Log日志管理
在开发过程中经常会通过打印日志的方式来查看我们的信息,但是如果直接在代码中打印日志,打包上线前,由于打印日志的代码太多而无法屏蔽,在用户使用时日志依然会继续打印,因此可能会造成数据泄露,所以我们经常会写一个日主管理工具类:public class LogUtils{ private static boolean isLog = true;//设置一个bool值
2016-11-08 08:18:17
823
转载 java设计模式——原型模式
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:public class Prototype implements Cloneable { public Object clo
2016-10-28 20:25:25
451
原创 java设计模式——建造者模式(Builder)
相对于抽象工厂模式有了一定优势,抽象工厂模式只能创建存储单一类的实例,而建造者模式能存储多个类的实例了。上代码,pass:前几篇都用First、Second啥的,没法混了,现在换成人了(*^__^*) 嘻嘻……首先,依然是创建一个接口:public interface Man { public void createMan(); }其次,依然是两个实
2016-10-28 20:16:01
459
原创 java设计模式——抽象工厂模式
上一篇文章我们讲到了工厂方法模式的几种形式,已经能使用工厂类来在需要的时候创建某各类的实例。但是作为设计模式需要满足一下原则:1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽
2016-10-28 16:33:40
529
原创 java设计模式——工厂方法模式
工厂方法模式分为三种:1、普通工厂模式:就是建立一个工厂类用于创建实现了同一接口的一些类的实例看下面实例代码:1.1 创建一个借口public interface Creator { public void funC(); } 1.2创建两个实现借口的类public class First implements Creator { @Override
2016-10-28 15:53:38
677
转载 Android异步消息处理机制完全解析
开始进入正题,我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃。相信大家在日常的工作当中都会经常遇到这个问题,解决的方案应该也是早已烂熟于心,即创建一个Message对象,然后借助Handler发送出去,之后在Handler的handleMessage()方法中获得刚才发送的Message对象,然后在这里进行UI操作就不会再出现崩溃了。 这
2016-10-28 01:38:57
391
转载 查找算法
/** * 一、顺序查找 * 说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表 **/ /** * 在s[0]-s[n-1]中顺序查找关键字为Key的记录 ,查找成功时返回该记录的下标序号;失败时返回-1 */ int SequelSearch(elemtype s[], keytype Key, in
2016-10-28 00:27:50
640
转载 Java面试之斐波纳契数列递归与非递归实现
问题:查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... 解答:(一)递归实现:class Solution { /** * @param n: a
2016-10-28 00:12:42
536
转载 Java实现经典排序算法及复杂度稳定性分析
/* 冒泡排序 */ public static int[] bubbleSort(int[] arry) { for (int i = 0; i < arry.length; i++) { for (int j = i; j < arry.length - i - 1; j++) {
2016-10-28 00:09:56
2192
转载 java二叉树非递归之前序遍历
思路:采用栈来实现非递归遍历步骤:1.对root进行异常处理2.将root压入栈3.循环终止条件为栈s为空,所有元素均已处理完4.访问当前栈顶元素(首先取出栈顶元素,随后pop掉栈顶元素)并存入最终结果5.将右、左节点分别压入栈内,以便取元素时为先左后右。6.返回最终结果/** * Definition for a binary tree node. *
2016-10-28 00:04:10
437
转载 java二叉树非递归之中序遍历
思路:使用辅助栈改写递归程序,中序遍历没有前序遍历好写,其中之一就在于入栈出栈的顺序和限制规则。我们采用「左根右」的访问顺序可知主要由如下四步构成。步骤:1.首先需要一直对左子树迭代并将非空节点入栈2.节点指针为空后不再入栈3.当前节点为空时进行出栈操作,并访问栈顶节点4.将当前指针p用其右子节点替代步骤2,3,4对应「左根右」的遍历结构,只是此时的步骤2取的左值为空。/*
2016-10-28 00:02:51
372
转载 android软件开发之webView.addJavascriptInterface循环渐进【二】
新建工程为了让大家更容易的理解,所以我这里就尽量的将代码缩短,这是我的工程的配置创建好工程之后,然后将界面调整为下面这样添加代码首先将两个button和webview添加进来,并给web添加两个JavaScript调用接口,testFunc1和testFunc2private Button m_testButtom1;private Button m_te
2016-10-27 21:07:26
658
转载 android软件开发之webView.addJavascriptInterface循环渐进【一】
代码由于这里是第一阶段的webView所我就写个最简单的文章,这样大家可以循环渐进的来了解addJavascriptInterface这句话是怎么用的。在这里我们引用Google的一个事例下面是我Google给提供的一个dome的地址:点击打开链接我们先看它的HTML文件,HTML的文件路径是在:点击打开链接他的代码为: /* This f
2016-10-27 21:00:12
650
转载 android 使用html5作布局文件
在android开发中,通常使用xml格式来描述布局文件。就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层。大部分企业,其实还是程序员自己动手布局。这样既浪费时间和精力,也未必能达到理想的效果。但是,在企业级的android开发中,使用html页面进行布局,也有很多的优势(例如:简单,大部分开发人员及美工都熟悉,方便统一进行更新,管理)。据笔者了解,已经有不少的公司在使用这
2016-10-27 20:41:55
749
转载 Android数据存储五种方式总结
本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据下面详细讲解这五种方式的特点第一种: 使用SharedPreferences存储数据
2016-10-23 15:38:34
1003
转载 android四大组件---BroadcastReceiver应用详解
据说程序员是最爱学习的群体,IT男都知道,这个行业日新月异,必须不断地学习新知识,不断地为自己注入新鲜的血液,才能使自己跟上技术的步伐。 今天我们来讲一下Android中BroadcastReceiver的相关知识。 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。 在Android系统中,广播体现在方方面面,例
2016-10-23 13:51:25
1321
转载 android四大组件--ContentProvider详解
一、相关ContentProvider概念解析:1、ContentProvider简介 在Android官方指出的Android的数据存储方式总共有五种,分别是:Shared Preferences、网络存储、文件存储、外储存储、SQLite。但是我们知道一般这些存储都只是在单独的一个应用程序之中达到一个数据的共享,有时候我们需要操作其他应用程序的一些数据,例如我们需要操作系统里的
2016-10-23 13:03:32
576
转载 TCP/IP三次握手、四次挥手总结
(一)TCP/IP三次握手原理: 建立连接协议(三次握手) (1)客户端向服务器端发送连接请求包SYN(syn=j),等待服务器回应; (2)服务器端收到客户端连接请求包SYN(syn=j)后,将客户端的请求包SYN(syn=j)放入到自己的未连接队列,此时服务器需要发送两个包给客户端; 1.向客户端发送确认自己收到其连接请求的确认包ACK(ack=j+1),向客户端表明
2016-10-23 01:51:13
539
转载 Android跨进程通信的四种方式
由于Android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content P
2016-10-23 01:17:23
4939
转载 JAVA IO分析大汇总
一、Java中的流,可以从不同的角度进行分类。 (1)按照数据流的方向不同可以分为:输入流和输出流。 (2)按照处理数据单位不同可以分为:字节流和字符流。 (3)按照实现功能不同可以分为:节点流和处理流。 输出流:从程序输出到文件 输入流:从文件输入到程序 因此输入和输出都是从程序的角度来说的。 字节流:一次读入或读出是8位
2016-10-22 20:14:41
456
转载 解决在Fragment中不能自动弹出软键盘的问题
1.在Activity中,EditText 无法自动弹出软键盘,可以在尝试在AndroidManifest中设置android:windowSoftInputMode=adjustResize也可以edit.setFocusable(true); edit.setFocusableInTouchMode="true" edit.requestFocus(); 2.在Fragmen
2016-10-22 12:12:42
2974
转载 Java多线程面试常见核心问题总结
1. 有T1、T2、T3三个线程,如何怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 使用join方法。 join方法的功能是使异步执行的线程变成同步执行。即调用线程实例的start方法后,该方法会立即返回,如果调用start方法后,需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面
2016-10-21 22:22:25
9625
原创 ViewPagerIndicator--使用TabPageIndicator实现指针控件
1、所需工具 (1)第三方开源库文件Android-ViewPagerIndicator-master文件夹下的library (2)模仿库文件的示例工程实现:导入Android-ViewPagerIndicator-master文件夹下的Sample工程,导入后的工程名:ListSample,查看SampleTabsDefault.java文件。2、具体实现步骤
2016-08-25 13:28:48
966
转载 IntentService
在Android开发中,我们或许会碰到这么一种业务需求,一项任务分成几个子任务,子任务按顺序先后执行,子任务全部执行完后,这项任务才算成功。那么,利用几个子线程顺序执行是可以达到这个目的的,但是每个线程必须去手动控制,而且得在一个子线程执行完后,再开启另一个子线程。或者,全部放到一个线程中让其顺序执行。这样都可以做到,但是,如果这是一个后台任务,就得放到Service里面,由于Service和Ac
2016-07-30 17:23:21
461
原创 Bundle可以存储的数据类型
void putAll(Bundle map) void putBinder(String key, IBinder value) void putBoolean(String key, boolean value) void putBooleanArray(String key, boolean[] value) void putBundle(String key, Bundle va
2016-07-26 10:55:44
2566
转载 设置Tag防止ListView图片错位
网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作。如果不重用 convertView 不会出现错位现象, 重用 convertView 但没有异步操作也不会有问题。 我简单分析一下: 当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 c
2016-07-06 16:58:04
3316
转载 使用ViewHolder优化ListVIew
直接上代码:public class MarkerItemAdapter extends BaseAdapter{ private Context mContext = null; private List mMarkerData = null; public MarkerItemAdapter(Context context, List markerItems)
2016-07-06 15:40:52
488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人