自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李俊的博客

关注Android开发

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

原创 Gson(1)

添加依赖compile 'com.google.code.gson:gson:2.7'推荐:Android Studio的插件GsonFormat可以根据Json数据快速创建对应的类。解析一段Json数据Json数据 {“name”:”Tom”,”age”:20} 其对应的一个Person类public class Person { private String name; pr

2016-06-20 20:01:54 366

原创 HttpURLConnection(1):网络编程的最佳实践

HttpCallbackListener接口HttpCallbackListener.javapublic interface HttpCallbackListener { void onFinish(String response); void onError(Exception e);}HttpUtil工具类public class HttpUtil { public

2016-06-20 17:09:35 386

原创 Web服务器(2):自己提供XML数据和Json数据

自己提供XML数据1 在C:\Apache24\htdocs目录中创建一个XML格式的文件xml_data.xml文件 2 编辑文件加入如下XML数据<apps> <app> <id>1</id> <name>Google Maps</name> <version>1.0</version> </app> <app>

2016-06-20 16:16:22 398

原创 Web服务器(1):使用Apache服务器进行搭建

这里使用Apache服务器来作为Web服务器进行搭建。安装Apache1 从Apache官网下载得到Apache24的httpd-2.4.20-x64-vc11-r2.zip压缩包 直接下载页面https://www.apachehaus.com/cgi-bin/download.plx 2 然后解压得到httpd-2.4.20-x64-vc11-r2文件 3 将httpd-2.4.20-x6

2016-06-20 15:41:59 680

原创 Json(1)

Json简介Json的全名是JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样, 广泛被采用的客户端和服务端交互的解决方案!具有良好的可读和便于快速编写的特性。Json的格式规范语法规则 数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组。 书写格式 数据:名称/值对,比如: “person”:”coder-pig” 简单的J

2016-06-20 14:14:08 260

原创 SearchView(1)

步骤1 将SearchView作为OptionMenu的一个Itemres/menu/option_menu.xml<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android

2016-06-20 11:22:57 246

原创 Git(2)

提交本地代码单个添加git add readme.txt全部添加(除了.gitignore中的文件)git add . 以上出现的warning不用担心,如果想关闭warning方法如下:git config core.autocrif true真正提交 。。。。查看提交记录git log查看还未add和commit的修改内容查看哪个文件修改过git status查看具体修改什么git diff

2016-06-18 23:42:05 174

原创 Git(1)

步骤1 使用Git Bash方法1 使用命令行进入Git安装目录的bin文件下cd “\Program Files (x86)\Git\bin” 这样就可以使用Git Bash了。方法2 相比方法1更简便。步骤2 设置Git配置emailgit config --global user.email “2447828262@qq.com”配置namegit config --global

2016-06-18 23:20:22 279

原创 TabLayout+ViewPager(1)

步骤1:添加依赖compile 'com.android.support:support-v4:23.4.0'compile 'com.android.support:design:23.4.0'步骤2:创建Fragmentfragment1.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2016-06-18 18:00:25 266

原创 TabLayout

步骤1:添加依赖compile 'com.android.support:appcompat-v7:23.4.0'compile 'com.android.support:design:23.4.0'注意:下面的版本号一定要跟上面的一样否则会报错。步骤2:使用TabLayout 在XML中设置TabItem<RelativeLayout xmlns:android="http://sche

2016-06-18 17:14:57 284

原创 Retrofit与RxAndroid结合使用

步骤1:添加依赖compile 'io.reactivex:rxjava:1.1.6'compile 'io.reactivex:rxandroid:1.2.1'compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:retrofit-adapters:2.1.0'compile 'com.

2016-06-18 16:16:49 266

原创 RxJava与RxAndroid

步骤1:在Android Studio中使用需要添加依赖compile 'io.reactivex:rxjava:1.1.6'compile 'io.reactivex:rxandroid:1.2.1'步骤2:MainActivity.javapublic class MainActivity extends AppCompatActivity { private TextView text

2016-06-18 13:37:45 261

原创 RxJava

知识来源:http://www.imooc.com/article/2298什么是ReactiveX?ReactiveX是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。实时数据处理是一件普通的现象,有一个高效、干净和可扩展的方式来处理这些情景是重要的。使用Observables和Operators来熟练操作它们。ReactiveX提供

2016-06-18 12:16:41 321

原创 设计模式:工厂模式

简介它属于创建型模式,提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。代码演示步骤1:创建一个接口。 Shape.javapublic interface Shape { void draw();}步骤2:创建实现接口的实体类。 Rectangle.javapublic class Rectangle

2016-06-18 11:53:56 178

原创 Android之URL

URL代表统一资源定位器,它是指向互联网“资源”的指针。URL可以由协议名、主机、端口、和资源组成。 格式:protocal://host:port/resourceName; 例如:http://hao123.com/tiyan.html URL包含的一些方法用于访问URL对应的资源: getFile(); 获取此url的资源名; getHost(); 获取此url的主机名;

2016-06-18 08:16:47 733

原创 HTTP协议:简介

全称为超文本传输协议(HyperText Transfer Protocol),设计之初是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。现在http的作用已不局限于HTML的传输。URLURL示例:http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuffSchema: http host: www

2016-06-17 21:24:37 262

原创 OkHttp(1):GET和POST

Http Get以异步的方式执行请求private void requestHttp1() { //请求的网络地址 String url = "http://www.baidu.com"; //创建OkHttp客户端实例 OkHttpClient mOkHttpClient = new OkHttpClient(); /

2016-06-17 18:44:16 396

原创 ViewPager(2):ViewPager与Fragment一起使用

FragmentPagerAdapterFragmentPagerAdapter继承自PagerAdapter ,主要用来展示多个Fragment页面,并且每一个Fragment都会被保存在FragmentManager中。 FragmentPagerAdapter最适用于那种少量且相对静态的页面。对于较多的页面集合,更推荐使用FragmentStatePagerAdapter。 FragmentP

2016-06-17 10:36:42 1825

原创 ViewPager(1):简单的使用ViewPager

ViewPager简介ViewPager是一个允许使用者左右滑动数据页面的布局管理器,通过一个适配器(PagerAdapter)来管理要显示的页面。 ViewPager更多的时候会与Fragment一起使用,这是一种很好的方法来管理各个页面的生命周期。Android提供了一些专门的适配器来让ViewPager与Fragment一起工作,也就是FragmentPagerAdapter与Fragment

2016-06-17 07:40:22 362

原创 Android之ContentProvider(三):Uri对象所对应的MIME类型

一个内容URI所对应的MIME字符串主要由三部分组分。 1. 必须以vnd开头。 2. 如果内容URI以路径结尾,则后接android.cursor.dir/,如果内容URI以id结尾,则后接android.cursor.item/。 3. 最后接上vnd.<authority>.<path>。 对于content://com.example.app.provider/table1这个内容U

2016-06-16 12:39:39 869

原创 Android之ContentProvider(二):Uri对象的内容URI

不同于SQLiteDatabase,ContentResolver中的增删改查方法都是不接收表名参数的,而是使用一个Uri参数代替,这个参数被称为内容URI。 内容URI 内容URI给内容提供器中的数据建立了唯一标识符。它主要由两部分组成,权限(authority)和路径(path)。权限是用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名。比如某个程序的包名是co

2016-06-16 11:49:29 1166

原创 Android之ContentProvider(一):内容提供器的用法

内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能。创建内容提供器public class DatabaseProvider extends ContentProvider { private static UriMatcher uriMatcher; public static final String AUTHORITY = "jun.de

2016-06-16 07:46:26 786

原创 Android之BroadcastReceiver(四):使用本地广播

系统全局广播:本应用程序发出的广播可以被任何其他应用程序接收到,并且本应用程序也可以接收来自于任何其他应用程序的广播。 本地广播:发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播。使用本地广播LocalBroadcastManager localBroadcastManager;IntentFilter intentFilter;LocalReceiv

2016-06-16 07:21:29 5045 2

原创 Android之BroadcastReceiver(三):发送自定义广播

发送标准广播Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");sendBroadcast(intent);由于广播是使用Intent进行传递的,因此还可以在Intent中携带一些数据传递给广播接收器。发送有序广播广播是一种可以跨进程的通信方式,因此在本应用程序内发出的广播,其他的应用程序也可以收到的。Inten

2016-06-16 07:06:44 640

原创 Android之BroadcastReceiver(二):接收系统广播

Android内置了很多系统级别的广播,可以在应用程序中通过监听这些广播来得到各种系统的状态信息。比如手机开机完成后会发出一条广播,电池的电量发生变化会发出一条广播,时间或时区发生改变也会发出一条广播等等。如果想要接收到这些广播,就需要使用广播接收器(BroadcastReceiver)。创建广播接收器public class NewBroadcastReceiver extends Broadca

2016-06-15 20:58:02 713

原创 Android之BroadcastReceiver(一):广播机制简介

上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就会播放一条广播来告知全校的师生。类似的工作机制在计算机领域也有很广泛的应用,比如在网络通信中,一个IP网络范围中最大的IP地址是被保留作为广播地址来使用的。比如某个网络的IP范围是192.168.0.XXX,子网掩码是255.255.255.0,那么这个网络的广播地址就是192.168.0.255

2016-06-15 16:51:36 330

原创 Android之Service(六):使用IntentService

为什么要使用IntentService?服务中的代码都是默认运行在主线程当中的,如果直接在服务里去处理一些耗时的逻辑,就很容易出现ANR(Application Not Responding)的情况。所以这个时候就需要用到Android多线程编程技术,应该在服务的每个具体的方法里开启一个子线程,然后在这里去处理那些耗时的逻辑。因此,一个比较标准的服务就可以写成如下形式:public class My

2016-06-15 16:34:54 394

原创 Android之Service(五):使用前台服务

服务几乎都是在后台运行的,一直以来它都是默默地做着辛苦的工作。但是服务的系统优先级还是比较低的,当系统出现内存不足的情况时,就有可能会回收掉正在后台运行的服务。如果希望服务可以一直保持运行状态,而不会由于系统内存不足的原因导致被回收,就可以考虑使用前台服务。有些项目由于特殊的需求会要求必须使用前台服务,比如说墨迹天气,它的服务在后台更新天气数据的同时,还会在系统状态栏一直显示当前的天气信息。 前台

2016-06-15 14:56:43 5347

原创 Android之Notification(一):通知的基本用法

创建通知思路:首先发送通知需要通过 NotificationManager.notify() 来实现,该方法的一个必要参数是Notification对象,Notification对象描述了通知的具体内容,构建该对象需要利用Notification.Builder类,Notification.Builder是Android3.0 (API 11) 引入的,为了兼容低版本,我们一般使用Support V

2016-06-15 14:39:45 372

原创 Android之Service(四):服务的生命周期

启动服务 一旦在项目的任何位置调用了Context的startService()方法,相应的服务就会启动起来,并回调 onStartCommand()方法。如果这个服务之前还没有创建过,onCreate()方法会先于onStartCommand()方法执行。服务启动了之后会一直保持运行状态,直到stopService()或stopSelf()方法被调用。注意虽然每调用一次startService(

2016-06-15 13:11:05 474

原创 Android之Service(三):活动和服务进行通信

在活动中指挥服务这就需要借助onBind()方法。 实例:希望在MyService里提供一个下载功能,然后在活动中可以决定何时开始下载,以及随时查看下载进度。 实现这个功能的思路是创建一个专门的Binder对象来对下载功能进行管理。 MyService代码如下:public class MyService extends Service { private Download

2016-06-15 10:53:20 3936

原创 Android之Service(二):服务的基本用法

定义一个服务public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; }}onBind()方法是Service中唯一的一个抽象方法,所以必须要在子类里实现。 既然是定义一个服务,自然

2016-06-15 10:20:12 374

原创 多线程编程(3):AsyncTask的基本用法

为了更加方便在子线程中对UI进行操作,Android还提供了另外一些好用的工具,AsyncTask就是其中之一。借助AsyncTask,即使对异步消息处理机制完全不了解,也可以十分简单地从子线程切换到主线程。当然,AsyncTask背后的实现原理也是基于异步消息处理机制的,只是Android做了很好的封装而已。 由于AsyncTask是一个抽象类,所以如果想使用它,就必须要创建一个子类去继承它。在

2016-06-15 09:44:42 318

原创 多线程编程(2):解析异步消息处理机制

解决在子线程中进行UI操作的问题 异步消息处理机制一般用于如解决在子线程中进行UI操作的问题。 和许多其他的GUI库一样,Android的UI也是线程不安全的。也就是说,如果想要更新应用程序里的UI元素,则必须在主线程中进行,否则就会出现异常。public class MainActivity extends Activity implements OnClickListener { p

2016-06-15 09:05:20 336

原创 多线程编程(1):线程的基本用法

Android多线程编程其实并不比Java多线程编程特珠,基本都是使用相同的语法。比如说,定义一个线程只需要新建一个类继承自Thread,然后重写父类的run()方法,并在里面编写耗时逻辑即可,如下所示:class MyThread extends Thread { @Override public void run() { //处理具体的逻辑 }}启动这个

2016-06-15 08:55:42 204

原创 Android之Service(一):服务简介

服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使当程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。 不过需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会

2016-06-15 08:47:41 295

原创 Android之Activity(一):活动简介

活动(Activity)是一种可以包含用户界面的组件,主要用于和用户进行交互。public class FirstActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

2016-06-15 07:31:35 455

原创 Android之Activity(二):使用Intent在活动之间穿梭

IntentIntent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务、以及发送广播等场景。Intent的用法大致可以分为两种,显式Intent和隐式Intent。显式IntentIntent有多个构造函数的重载,其中一个是Intent(Context package

2016-06-14 22:26:53 669

原创 Android之Activity(四):活动的启动模式

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个Task里。 Task是一个具有栈结构的对象,一个Task可以管理多个Activity,启动一个应用,也就创建一个与之对应的Task。 Activity一共有以下四种launchMode: 1.stand

2016-06-14 18:31:09 258

原创 Android之Fragment(五):Fragment的通信问题

在Activity中获取Fragment<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_activity_layout" android:layout_width="match_parent" android:layout_he

2016-06-14 17:51:34 344

空空如也

空空如也

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

TA关注的人

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