自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小强就是我的专栏

热爱、专注、勤奋。

  • 博客(63)
  • 收藏
  • 关注

原创 Android使用ORM思想封装数据库

什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。举例 在Java Web中,hibernate就是实现了这样的功能。通过引入ORM,不但可以减少程序员的代码量,更重要的是方便不同数据库之间的

2015-09-10 11:08:07 886

原创 从源码角度分析Android中UID与GID的分配

概述UID一般理解为User Identifier,在linux中就是用户的ID,表明是哪个用户运行了这个程序,GID则表明了这个用户属于哪个组。它们主要用于权限的管理。而在Android中,部分权限的管理是依赖底层的linux的,所以了解Android的UID/GID十分必要。网上有下面的一段话: 而在Android 中又有所不同,因为Android为单用户系统,这时UID 便被赋予了新的使命,

2015-09-09 17:07:32 4511

原创 Java反射机制(2)--反射的用途举例

前一篇文章介绍了反射的基本用法。反射功能的基本介绍今天写这篇文章是为了依据笔者项目的经验,讲讲反射在Android的三个具体用途。欢迎大家一起补充讨论。获取系统编译后隐藏的方法,比如源码中使用/*hide*/ 修饰的函数。确认方法是否存在。这些方法有可能是自己自定义并添加的。笔者将以Android中的createPackageContext()(获取另外一个App的资源和方法)为例讲解。兼容不

2015-08-04 19:01:32 1596

原创 Android5.0以上系统的移动网络开关

笔者最近遇到一个非常有意思的bug,贴出来和大家分享下。 那是一个温暖的早晨,阳光晒的人很舒服。一封bug邮件像一片叶子飘到我的邮箱。一番交流,笔者确认负责的Widget开关在Android5.0以上系统没有作用。相信很多做过移动网络开关的朋友都知道,在ConnectivityManager中有两个方法setMobileDataEnabled和getMobileDataEnabled通过反射来控制

2015-07-30 21:03:07 7090 6

原创 Android中注册和发送广播中添加权限

Android中注册和发送广播中添加权限在一个安全稳定的App中,注册和发送广播中添加权限是必须要考虑的问题。 而添加权限的设计就是为了控制如下两个方面:限制哪个应用可以给我发送广播,避免受各种Action的干扰限制哪个应用可以接收我发出去的广播,避免发出的Action被窃听如果我们自身的应用是李四的话,那就是如下情景:Created with Raphaël 2.1.0张三张三李四

2015-07-30 20:13:46 5558 1

原创 北京三个月心得与体会

转眼已经在北京实习了三个月有余。有一些心得和体会记录下来,以便督促和发现自己的不足,时刻提醒自己改进。今天就从我认为的在工作中必须加以培养的习惯或者素养动笔吧。执行力:     首当其冲的便是它了。工作中,有时候遇到的问题需要和别的同事、甚至是别的公司的团队进行沟通。由于我初来咋到,一开始遇到问题确实不知道找谁,面对那些大牛也有些不太好意思,但每个版本都有自己的Dealine,这些

2015-07-11 16:39:15 933

原创 多进程使用Provider代替AIDL

来百度之后,涉及到了多进程通信的技术。做了相关学习和一些代码工作后,有一些感想想和大家分享下。虽然使用多进程增加了程序的内存空间,但是也有很多负面的影响。比如:使用很多第三方lib扩展额外进程功能时容易混乱单例模式在单进程中用的很爽,但在多进程就鸡肋了使用AIDL完成的稳定性和效率并不是很高,本人做的项目拉取AIDL传来的值一直存在不稳定的问题。最后一个问题最蛋疼。项目组老

2015-06-28 15:20:33 1908 2

原创 类似微信朋友圈动态的数字红点

简单的自定义View,实现类似微信朋友圈动态的数字红点。还可以再健壮一些。主要重写了自定义View的onDraw方法。public class RedCircleNumber extends View{ //圆的半径 private int mRadius = 30; //显示数字的大小 private int mNumberSize = 40; //具体

2015-06-03 17:08:59 2079

原创 Android Studio添加第三方库

添加打包好的jar文件step1:将打包好的文件粘贴至app文件夹下的libs文件夹中step2:点击gradle按钮,重新构建项目step3:在app文件夹下的build.gradle文件中添加依赖。打开此文件,可以看到compile fileTree(dir: 'libs', include: ['*.jar'])说明gradle默认创建就已包含*.jar文件。如果是lib后缀文件

2015-06-03 11:20:00 549

原创 Android多进程通信(1)----代码架构推荐

在实际的项目中,如果进程A和进程B进行AIDL绑定通信,通常B进程中的Service不止一个。这时候采用将A进程和B进程的一个MainService绑定,再通过MainService获得B进程中其他service的接口。这样一来,绑定了一个MainService就可以与所有service交互。 代码的架构将清晰明了。进程主Service的AIDL文件IMainInterface.a

2015-05-25 16:29:38 742

翻译 Android编码规范风格指导(翻译)

原文地址:http://source.android.com/source/code-style.html有很多为Android开源社区贡献代码的程序员,每个人都有不同的代码风格,为此google出了官方的代码规范,供贡献者的参考。本文为其中文翻译。下面的这些既不是指导也不是建议,而是实实在在严格的规则,Android开源社区贡献者的代码如果不遵守这些规则,将不会被收录。

2015-04-28 21:00:50 1709

原创 Java的反射机制(1)-反射功能的基本介绍

参考网址:http://my.oschina.net/u/1407116/blog/209417http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html在此之前需了解的背景知识:Class类:     Class的实例表示正在运行的类和接口,基本的数据类型(boolean, byte, c

2015-04-23 17:54:56 1694

原创 ListView的重用机制

今天下午coding PM提出来的需求。在编码过程中发现一个问题,后来经过查阅和思考还是解决了。跟大家分享下这个过程。该PM的要求是展示一个listview,listview的每个item都包含一个按钮,当点击了该按钮时,按钮的文字变成已点击。当listview的长度比较长,超过一个屏幕时,点击第1个,改变状态。往下拉动,发现第15个也是显示的“已添加”。

2015-04-22 17:26:05 1595

原创 斐波那契数列递归和非递归算法

/** * @author David * 斐波那契数列递归和非递归算法 */public class FeiBoNaQie { public int fun(int k){ int value; if(k==1||k==2){ value = 1; }else{ value = fun(k-1) + fun(k-2); } return value;

2015-03-08 21:09:47 2228

原创 求链表的倒数第k个节点

思路是使用两个指针,第一个指针先走k-1步,然后两个指针一起走,当第一个指针走到结尾的时候,第二个指针指向的就是倒数第K个结点。class MyNode{ int value; MyNode next; MyNode(int value){ this.next = null; this.value = value; }}/** * @author David * 求

2015-03-08 20:36:55 534

原创 把一个字符串转化成整数

/** * @author David * 将字符串转换成数字,重点考察正负号,输入的不是数字字符的情况 */public class Example3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(Syste

2015-03-08 20:13:40 767

原创 求最大递增数

public class LookForMaxIncrease { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.next(); int v = 0, maxv = 0; int i; for (i = 0; i < st

2015-03-07 13:14:38 802

原创 大括号,中括号,小括号匹配问题

需要使用Stack进行处理,如果是左括号就压入,如果是右括号,就弹出,与之对比。/** * @author David {[(三种括号匹配问题 * {[()]} {}[]()匹配 * {[}]不匹配 */public class BracketMath { public static void main(String[] args) { Scanner scan = new

2015-03-07 13:12:44 3565

原创 内存管理小结

栈区(Stack):函数的参数,局部变量(auto)堆区(Heap):由程序员分配(malloc)与释放(free)全局区和静态区:存放局部变量和静态变量字符常量区:常量字符串放于此,程序结束时由系统释放程序代码区:存放函数体的二进制代码总结:为了方便记忆,内存管理可以分为两部分,一部分是程序员自己申请和释放的空间,另一部分是系统自动释放

2015-03-01 10:40:54 596

原创 数据结构Java版-树

这里的树通常是指二叉树。class TreeNode{    int value;    TreeNode left;    TreeNode right;} 下面是一些与二叉树有关的概念:二叉树搜索:对于所有节点,顺序是:left children 平衡vs.非平衡:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个

2015-02-28 16:20:32 664

原创 数据结构Java版-栈和队列

在Java中实现链表是非常简单的,每个节点都有一个值,然后把它链接到下一个节点。定义节点:class Node { int val; Node next; Node(int x) { val = x; next = null; }}栈结构(注意箭头方向):class Stack{ Node

2015-02-28 16:14:40 554

原创 ListView实现分页功能

Android中ListView分页是比较常用的功能,当用户从网络上读取信息时候,如果一下子加载全部信息这将耗费比较长的时间,造成不好的用户体验,同时一屏的内容也不足以显示如此多的内容。这时候,我们就可以采用ListView的分页。通过分页分次加载数据,用户看多少就去加载多少。通常这也分为三种方式,一种是设置一个按钮,用户点击即加载。一种是当用户滑动到底部时自动加载(需要SrcollVie

2015-02-28 16:00:31 890

原创 Android使用TextSwitcher和ImageSwitcher实现平滑过渡

更改view当中的内容,比如TextView是我们进行项目开发过程中经常遇到的操作。如果直接使用setText方法切换文字的话,TextView的内容是立刻改变的,没有一个平滑的效果,没有良好的视觉体验。而TextSwitcher和ImageSwitcher正是实现了这样的功能。布局文件如下:< LinearLayout xmlns:android

2015-02-09 11:01:16 1002

原创 Android实现snmp协议(一)

2015年一月初。接到华为一位老师的电话,让我帮忙做一款他们在北京展会上要用到的App,该App能够展示华为的网络设备运行状态并可以设置一些简单的参数,包括AP、LSW、AP、AR等。华为老师跟我说他们是使用snmp协议v2c的版本进行管理的,这意味着我也得在Android设备实现该协议,并与他们的网络设备交互。回去认真研究了一下并请教了一些对这块比较熟悉的小伙伴,总算对s

2015-02-08 21:51:38 3558

原创 使用AlertDialog.Builder创建对话框

Android 中经常需要使用对话框,对此进行总结。主要涉及到的对话框有Dialog、AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog。其中AlertDialog是用到的最多的,且内容设置方法最多的类型。首先,AlertDialog的构造方法是protected类型,故不能直接通过构造方法新

2015-02-07 14:44:55 2734

原创 Tomcat相关

参考网址:http://blog.csdn.net/onlymilan/article/details/5493485Tomcat的文件夹lib:Tomcat服务器所需要的各个库文件bin:所有可执行程序,启动关闭再次logs:系统日志webapps:web应用存放的目录,web项目保存到此便可发布conf:设置文件夹work:临时文件夹,生成所有的临时文件(*

2015-01-21 13:52:59 618

原创 Android中Application的使用

初学Android的朋友都是最先接触的Activity,对Application比较陌生,这里讲解下。什么是Application     Application和Activity,service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储该程序的一些信息。通常我们是不需要创建一个Application

2015-01-05 17:41:43 861

原创 完全自定义spinner

参考网址:http://www.cnblogs.com/coding-way/p/3549865.htmlAndroid spinner是一个使用比较多的view,这里说下如何自定义(其实很简单,一些网上的参考资料让人看了有点费解)。要改的主要涉及两个部分,一部分是用来点击的按钮,第二部分是用来选择的区域。第一部分的更改,只要直接修改

2015-01-05 15:40:27 841

原创 Android 中Animations的使用 代码篇

Android 中Animations的使用xml篇:http://blog.csdn.net/leirenbaobao/article/details/42395153这里讨论如何在代码中实现Animations的效果。注:屏幕左上角是坐标零点,往下往右为y,x正方向在代码中设置Animations的步骤:1.创建一个AnimationSe

2015-01-05 11:20:10 594

原创 Android 中Animations的使用 xml篇

Animations是Android的UI实现动态效果的API。主要包含两类,一类是Tweened Animations, 一类是是frame-by-frame Animations。第一类是对一个view的处理,而第二类是对一个drawable序列的处理。这两类效果既可以在代码中实现,也可以在xml中实现。这里介绍下在xml中的实现。T

2015-01-04 17:41:49 810

原创 Android xml中shape(画图)的使用

Android中res资源文件下除了定义基本的Layout布局文件、存放适配图片资源等功能外,还提供了定义menu菜单, Values主题,动画,绘图等功能。使用这些功能很强大,可以减小代码量与图片资源。这里介绍下shape(画图)的使用,shape包含了corners  gradient  padding  size  solid  stroke等属性,绘制一个简单的图像

2015-01-04 11:00:41 2968

原创 自定义Radio

1、在drawable文件夹下创建radio的selector文件,编写如下代码: xml version= "1.0" encoding= "utf-8" ?> selector xmlns:android ="http://schemas.android.com/apk/res/android" >    item android:drawable = "@draw

2014-12-31 16:45:56 657

原创 startActivityForResult()的用法

在Android中,可以使用Intent跳转至新的Activity页面,并可以通过putExtra携带下个页面需要的参数。A中的代码:Intent intent = new Intent(xxx.this, yyy.class);intent.putExtra( "name", "leirenbaobao");startActivity(intent);

2014-12-31 13:27:25 941

原创 自定义checkbox

1、在drawable文件夹下创建checkbox的selector文件,编写如下代码: 其中,checkbox的选中和非选中状态可以用state_checked的true或false表示,checkbox_normal和checkbox_checked就是自定义的样式。2、在checkbox的button属性中引用创建的selector<

2014-12-31 10:02:54 609

原创 Android点9图拉伸示意

图是转的,感谢原作者。

2014-12-30 17:51:42 2408

原创 自定义Toast

Toast通知十分方便,比起Dialog,不受Activity生命周期的影响(当Activity finish()之后,Toast依然可以存在)。Android自带组件的风格都很挫,跟iOS没法比,直接拿来用的情况几乎没有,都需要自定义。包括这个Toast。step1、自定义Toast要用的xml文件step2、new Toast()step3、设置

2014-12-30 11:52:43 523

原创 Java线程交互的三个方法(四)

Java中除了使用synchronized 同步以外,经常还使用java.lang.Object提供的三个方法wait()、 notify()、 notifyAll()三个方法完成更高级和精确的交互操作。Java线程涉及的三个方法:wait(): 导致当前的正在运行的线程等待,直到其他线程调用此对象的 notify() 方法或notifyAll() 方法。notif

2014-12-29 20:55:12 890

原创 Java回调

回调是Java非常经典的用法,体现了Java的多态和动态绑定,回调指的是接口的回调(有很多概念被学过的人简化的称呼,给初学者带来困惑,真是伤不起)。网上关于回调的文章一大推,说法也很多,比如:”A对象调用了自己的方法a,方法a接收的参数是B接口的实例b,而在方法a中将执行接口B中的方法c。“对于初学者来说,理解起来非常困难,学习的乐趣也没了。在这先举

2014-12-25 15:10:17 633

原创 Java线程(三):同步与锁

参考网址(写得非常好,珍藏网址之一):http://www.blogjava.net/tscfengkui/archive/2010/11/10/337709.html?opt=admin当两个以上的线程对同一个对象进行操作时,这个对象的属性就难以控制了,会出现很多意外的结果。举一个在多线程操作当中经典的例子,电影院售票问题。电影院的窗口可以同时售票,售出的票不

2014-12-25 12:01:05 589

原创 初学python求组队之用python画一个圣诞树,祝大家圣诞快乐!

程序:def paintleaves(m): for i in range(m): if(i == 10): print( ' '*(m-i) + '*'*( 2*i + 1-len( 'happy Christmas')) + 'happy Christmas'+ ' '*(m-i)) continue

2014-12-24 14:54:07 10720

空空如也

空空如也

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

TA关注的人

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