自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Android异步消息机制

Android的异步消息机制在Android系统中的重要性读者应该都很清楚,无论是在平时开发中,还是笔试、面试中,这方面的内容都是无法避免的。Android提供了Handler和Looper来满足线程间通信,而MessageQueue则是用来存放线程放入的消息。下面我们就结合源码分析一下这三者的关系。 (1)Handler的基本使用方式:public class MainActivity exte

2017-09-29 11:33:33 397

原创 Java动态代理(代理模式/委托模式)

Java动态代理(代理模式/委托模式)1、代理的定义为其他对象提供一种代理以控制对这个对象的访问。2、代理的使用场景在某些情况下,我们不希望或是不能直接访问对象 A,而是通过访问一个中介对象 B,由 B 去访问 A 达成目的,这种方式我们就称为代理。这里对象 A 所属类我们称为委托类,也称为被代理类,对象 B 所属类称为代理类。代理优点有:隐藏委托类的实现解耦,不改变委托类代码情况下做一些额外处

2017-08-08 10:45:23 4969 2

原创 Java内置进制转换源码解析

Java内置进制转换源码解析在实际应用中我们经常要用到进制转换,Java的Integer类也已经为我们提供了响应的方法,如下面几个方法分别是将十进制转换为十六进制、八进制以及二进制。//十进制转十六进制public static String toHexString(int i) { return toUnsignedString0(i, 4);}//十进制转八进制public st

2017-08-06 17:00:19 716

原创 去除字符串中的元音字母

去除字符串中的元音字母下面给出c语言和Java两种版本。相对来说,C语言版本性能应该是更优的。1、C版本中直接使用字符数组,本质就是使用指针操作内存中的数据,因此效率方面是比较高的。//C版本#include "stdio.h"#include "string.h"char * deleteChar(char * string){ char * s = string; int

2017-07-29 12:07:34 6985

原创 Comparator源码解析

Comparator源码解析在对数组以及集合的排序中,我们经常使用Arrays.sort(A);或者Collections.sort(A)对数组或集合进行排序。当我们需要自定义排序规则的时候,就要使用Comparable或者Comparator接口。Comparable是和具体的类进行绑定,也就是“静态绑定”。而Comparator是在具体的类中可以选择不同的Comparator进行绑定,也就是“动

2017-07-25 13:08:03 3411

原创 MD5加密

笔者在最近的项目中使用到登录模块,现在的应用基本也都需要登录功能,而一旦说到登录就必然涉及到用户隐私。在互联网这个开放的平台上直接传输用户的明文信息显然是不合理的,因此就要为用户信息加密。此次笔者采用的是md5加密,md5具有不可逆性,但是网上有不少站点拥有常见密码的md5密文对应的明文的数据库,因此为了安全性,笔者采用md5复合加密,即对md5产生的密文加上其他信息后再一次进行md5加密,这样就很

2017-03-28 12:16:26 482

原创 Basic_11_十六进制转十进制

问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535程序:import java.util.Scanner;public class Main { public static void main(String[] arg

2017-03-27 14:01:02 485

原创 Basic_10_十进制转十六进制

问题描述   十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。   给出一个非负整数,将它表示成十六进制的形式。 输入格式   输入

2017-03-27 13:58:59 728

原创 Basic_09_特殊回文数

问题描述   123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式   输入一行,包含一个正整数n。 输出格式   按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899 数据规模和约定   1<=n

2017-03-27 13:57:19 296

原创 Basic_08_特殊回文数

问题描述   1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式   按从小到大的顺序输出满足条件的四位十进制数。程序:public class Main { public static void main(String[] args) { for(int i=1000;i<10000;i++){

2017-03-27 13:54:00 244

原创 Basic_07_特殊的数字

问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。 编程求所有满足这种条件的三位十进制数。 输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。程序:public class Main { public static void main(String[] args) { for(int i=1

2017-03-27 13:52:11 415

原创 Basic_06_杨辉三角

问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。   它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。   下面给出了杨辉三角形的前4行:   1   1 1   1 2 1   1 3 3 1   给出n,输出它的前n行。输入格式 输入包含一个数n。输出格式 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依

2017-03-27 13:50:24 296

原创 Basic_05_查找整数

问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式 第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式 如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。 样例输入 6 1 9 4 8 3 9 9 样例输出 2 数据规模与约定

2017-03-27 13:48:42 266

原创 Basic_04_数字图形

问题描述 给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出5-211数据规模与约定1 <= n <= 10000。程序:

2017-03-27 13:45:57 430

原创 Basic_03_字母图形

问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式 输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。 输出格式 输出n行,每个m个字符,为你的图形。 样例输入 5 7 样例输出 ABCDEFG BABCD

2017-03-27 13:43:56 348

原创 Basic_02_01字串

问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式 本试题没有输入。 输出格式 输出32行,按从小到大的顺序每行一个长度为5的01串。 样例输出 00000 00001 00010 00011 <以下部分省略>程序:public class

2017-03-27 13:42:26 266

原创 Basic_01_闰年判断

问题描述 给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:年份是4的倍数而不是100的倍数;年份是400的倍数。其他的年份都不是闰年。输入格式 输入包含一个整数y,表示当前的年份。 输出格式 输出一行,如果给定的年份是闰年,则输出yes,否则输出no。 说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大

2017-03-27 13:40:53 409

原创 仿知乎日报(6)_主题界面内容区加载布局

主界面MainFragment加载布局1、效果2、代码otherFragment.javapublic abstract class OtherFragment extends BaseFragment { private NetUtils dailyNetUtils; protected String dailyUrl = "http://news-at.zhihu.com/api

2017-03-11 15:12:30 750

原创 仿知乎日报(5)_主界面内容区加载布局

主界面MainFragment加载布局1、效果   从上面两个图可以看出首页的布局是最上边一个TitleBar,接下来是一个ViewPager,ViewPager中有一个TextView,再下面是一个线性排列的小圆点,ViewPager下面是一个ListView。日常心理学以及其他11个主题日报的布局是一样的。而从这13个布局还可以抽象出一个共用的布局,利用我们在前面在加载MenuFragment用

2017-03-11 15:07:48 1155

原创 仿知乎日报(4)_加载侧滑菜单

完成侧滑菜单布局1、界面分析从“日常心理学”开始是一个ListView的内容,上面包括“首页”的内容是ListView的一个HeadView。2、代码1、menu_layout.xml(蓝色部分)<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/

2017-03-10 21:43:54 418

原创 仿知乎日报(3)_MainActivity分析

MainActivity分析1、结构2、界面分析 首先第一张图片是主页面,是一个Fragment。第二张图片是左侧滑菜单,是一个ListView。整体界面是使用MaterialUI中的DrawableLayout布局。关于Drawable的使用可以看一下笔者前面的Blog。3、代码activity_main.xml<?xml version="1.0" encoding="utf-8"?><an

2017-03-10 21:08:48 400

原创 仿知乎日报(2)_欢迎页面

欢迎界面1、效果2、分析整体布局为相对布局ImageView填充整个界面TextView放置于图片的下方3、代码1、LauncherActivity.javapublic class LauncherActivity extends Activity { private RelativeLayout activity_launcher; private AnimationSet an

2017-03-10 20:21:53 369

原创 仿知乎日报(1)_绪论

导入库与项目结构分析1、导入库开源的迷人之处正在于“不用重复的造轮子”,使用开源库能够一定程度上加快我们开发的速度,推进软件开发更快的发展。在笔者的项目中使用了以下几个开源库compile 'com.android.support:design:24.2.1'compile 'de.hdodenhof:circleimageview:2.1.0'compile project(path: ':o

2017-03-10 20:18:43 423

原创 Android回调函数

在Android学习中经常会遇到回调函数这个概念,但很多读者对于回调函数的认识是不大清楚的。从定义说起估计很多读者又会被绕晕了,这里就举一个常见的例子,按键的点击事件就是就是经典的点击事件。点击事件触发onClick()方法,onClick()处理逻辑有开发者自行实现,其实质就是接口编程。回调函数在自定义View时尤为常见,在其他场合也很实用。下面我们就那Button的点击事件作为例子讲解如何去实现

2017-03-07 13:12:23 653

原创 解决Fragment点击事件透传的问题

笔者最近在做一个项目的时候不经意间遇到一个问题,就是在使用Fragment一般为了避免重复加载布局,都会使用add()和hind()方法,但是当替换上去的Fragment内容为空白的时候,就会发现点击会触发被覆盖的Fragment的事件,解决的方法大抵有两种,不过原理都是一样的,根本的解决方法就是要把点击事件在当前页面消费掉,这点可以了解事件的分发机制。下面就来具体说一下两种方式:1、在fragme

2017-03-06 16:22:25 3747

原创 DrawableLayout实现仿QQ侧滑菜单

由于移动设备的屏幕限制,在主界面同时显示很多东西是不大显示的事,因而很多时候我们都会把一些功能选项放在菜单。但传统的菜单界面比较单调,而且交互体验并不是很好,因此,侧滑菜单也因此应运而生。实现侧滑菜单的方式有很多种,包括自定义控件,使用开源库SlideMenu等,但Google在MaterialUI中推出使用DrawableLayout实现侧滑菜单的功能。既然市面上已经有了不少侧滑菜单的实现方式,那

2017-03-06 13:32:32 1881

原创 沉浸式状态栏(修改状态栏)颜色的简单实现

Google 推出MaterialDesign后,可以说极大的美化了Android的UI,开发者只需按照MaterialDesign的相关标准就能设计出炫酷的界面。自从5.0推出后,Android就开始支持修改状态栏的颜色,从QQ、网易云音乐等主流的App都可以看到这一特性使得Android界面更加一体化。网络上关于修改状态栏的方法更多,也有很多开源库,今天讲一种简单的实现方式。1、在Java代码中

2017-03-03 16:59:38 3248

原创 设置DrawableLayout覆盖整个屏幕

DrawableLayout是Android5.0后推出的一个布局,可以实现QQ侧滑菜单的效果,但是有些时候需要实现侧滑菜单覆盖整个屏幕,这时候只需在布局文件中设置相应属性即可。代码如下<ListView android:id="@+id/list_view_menu" android:layout_width="match_parent" android:layout_he

2017-02-28 18:57:50 1379

原创 ListView去掉分割线的几种方法

ListView是Android开发中经常用到的控件,而在一些场合我们不需要分隔线或者需要自定义分隔线,这种情况就需要把分隔线去掉,以下提供常用的两种方法。1、设置android:divider=”#ffffff”以及android:dividerHeight=”0dp”<ListView android:id="@+id/list_view_menu" androi

2017-02-28 18:49:51 12074

原创 ListView的优化

ListView的优化ListView是Android中最常见也是最难用的控件,可以说现在市面上的Android应用都会包含ListView,因此掌握ListView对于Android开发来说是十分重要的。这里主要说一下ListView常见的几个优化的方向。1、不进行优化: 每次getView()的时候都会执行View view = View.inflate(mContext,R.layout.i

2017-02-18 09:48:39 742

原创 基于URL的抓取搜索引擎搜索结果数目的Java小工具源码

效果如下图: 至此Google、百度以及搜狗三大搜索引擎,可根据需要扩展其他搜索引擎。 下面是类图: 通过抽象类SearchEngine实现代码的可扩展性。 下面SearchEngine抽象类的源码:package com.eyck;import java.io.BufferedReader;import java.io.File;import java.io.FileWrite

2016-12-25 20:57:12 1998

原创 startUML2.8.0使用简单说明

随着笔者的进一步学习,越来越感受到程序规划的重要性。对于学习Java的笔者来说UML类图的重要性自然不言而喻了。搜索一番后,笔者选择使用startUML这款工具,现在已经更新到2.8.0了,界面与以前的版本有了较大的差异。 使用也比较方便,单击左边工具栏,然后将鼠标移至中间绘图区,单击即将控件放至绘图区中 如上图是一个类图,下面对每一个图标的内容进行解释(从左到右,从从上到下)。 左侧

2016-12-25 19:40:46 5531 1

转载 StarUML使用说明-指导手册

[转载自MONKEY_D_MENG的博客] 1.综述  StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具。这是一个用Java语言描述的创建类图的简明手册。 StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stub code” 的工具。SU也可以做JAVA逆向工程,以产生相应的UML图表。   在本教程中,我们将使用SU设计一个pizza饼。执

2016-12-25 18:41:07 1402

原创 解决Stm32出现..\HARDWARE\ADC\adc.c(22): error: #20: identifier "ADC_InitTypeDef" is undefined异常

笔者本科阶段读的是通信工程,因此各种比赛或者作业免不了要使用stm32。而使用stm32中将几个单独的工程合并起来更是家常便饭,而合并工程中常遇到的一个问题是已经将.c文件添加到工程中,而且路径也配置对了,但还是出现下面的错误“..\HARDWARE\ADC\adc.c(22): error: #20: identifier “ADC_InitTypeDef” is undefined”。笔者在参

2016-12-25 10:26:40 27555 20

原创 多个Activity交互的生命周期

首先,我们创建一个新的android module。然后把与生命周期相关的7个方法添加到java文件中,代码如下:public class MainActivity extends Activity { private String test="TagTest"; private Button second; @Override protected void onCre

2016-11-08 17:04:00 389

转载 Android最佳的开源库集锦

转载 原文链接 原文:Best Android Libraries for Developers 作者:open game art 翻译:Daisy 责编:仲培艺 工欲善其事,必先利其器。一个好的开发库可以快速提高开发者的工作效率,甚至让开发工作变得简单。本文收集了大量的Android开发库,快来切磋一下,到底哪一个最适合你。动画Android View Animations:一个非常

2016-11-08 16:29:32 331

原创 Android程序跳过登录界面直接进入主界面(自动登录)

android程序自动登录功能的实现。

2016-11-03 18:19:38 14025 5

原创 为Android程序设置欢迎界面

public class WelcomeActivity extends Activity{ private static final int DELAY_TIME=3*1000;//3秒 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

2016-11-03 18:01:48 1087

原创 GridView的使用

GridView 的使用

2016-10-31 21:19:33 242

原创 计算算法运算时间

public static void calTime(){ long startTime=System.currentTimeMillis(); /***算法***/ long endTime=System.currentTimeMillis(); System.out.println("算法运行时间:"+(endTime-startTime)+"ms");}

2016-10-31 16:33:02 930

空空如也

空空如也

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

TA关注的人

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