
Android
Gpwner
这个作者很懒,什么都没留下…
展开
-
OKIO源码分析<Segment的设计智慧>
1.Segment.javaa).final class Segment,只看类的修饰符就可以看出给类不能被修改 b).看看成员变量: /*当前segement所占的字节数*/ static final int SIZE = 8192; /*当前segment被分享的最小字节数,也就是当需要达到共享的数据的大小比1024字节数大的时候才共享*/ static final int SHARE原创 2017-03-24 21:27:45 · 1670 阅读 · 0 评论 -
Android<我所理解的ContentProvider>
1.什么是ContentProvider内容提供程序管理对结构化数据集的访问。它们封装数据,并提供用于定义数据安全性的机制。 内容提供程序是连接一个进程中的数据与另一个进程中运行的代码的标准界面。如果想要访问内容提供程序中的数据,可以将应用的 Context 中的 ContentResolver 对象用作其他应用来与ContentProvider 通信。 ContentResolver 对象会与内容原创 2017-02-21 22:26:06 · 571 阅读 · 1 评论 -
Android<我所理解的Service>
1.service是什么Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。2.service的两种状态i.启动原创 2017-02-21 14:26:43 · 531 阅读 · 0 评论 -
Android<五大布局>
1.布局的概念布局定义用户界面的视觉结构,如Activity或应用小部件的 UI。可以通过两种方式声明布局:i.在 XML 中声明 UI 元素。Android 提供了对应于 View 类及其子类的简明 XML 词汇,如用于小部件和布局的词汇; ii.运行时实例化布局元素。应用可以通过编程创建 View 对象和 ViewGroup 对象(并操纵其属性)。 Android 框架让你可以灵活地使用以下原创 2017-02-20 11:50:20 · 537 阅读 · 0 评论 -
Android<任务和返回栈>
应用通常包含多个 Activity。每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity。 例如,电子邮件应用可能有一个 Activity 显示新邮件的列表。用户选择某邮件时,会打开一个新 Activity 以查看该邮件。一个 Activity 甚至可以启动设备上其他应用中存在的 Activity。例如,如果应用想要发送电子邮件,则可将 Intent 定义为原创 2017-02-20 19:39:37 · 519 阅读 · 0 评论 -
Android studio常用22个快捷键
前言,昨天晚上在简书上看到一篇文章,上面讲到了很多androidstudio的快捷键。以下下是我提取并验证的快捷键,加上一些我平常使用的快捷键1.移动多行ctrl+alt+上下箭头 2.查看一个方法在何处被调用:光标悬停到放法名处,同时按下Fn+Alt+F7/ctrl+alt+H 3.当调用一个方法之后其参数刚开始的时候会展现,但是过了一会之后就会消失了。光标移动到放法的括号内,然后同时原创 2017-01-04 10:54:20 · 1088 阅读 · 0 评论 -
Android 从数据库中快速搜索匹配数据并添加监听事件
如何从数据库中搜索与我们目标相符的数据呢? 我使用的是List view+cursoradapter。现在应该很少有人使用list view了吧,原来打算换换recyclerview来写的,但是recyclerview不支持cursor view啊。暂且先记着,等日后研究出来了再改一改吧。下面是效果图: 使用navicat进行模糊查找,结果也是一样的 贴出核心代码:package com.原创 2016-12-19 20:49:58 · 4425 阅读 · 2 评论 -
Android工厂模式+View pager+MPAndroidChart实现的会旋转的饼状统计图
最近在做一个项目,由于有需要统计的需要,于是就做成了下面饼状统计图。 下图是效果图: 大致思路是: 关于的介绍这里不做详细介绍,如果想深入请点击开源项目MPAndroidChart 下面是其实现:首先是添加MPAndroidChart依赖: maven { url "https://jitpack.io" } compile 'com.github.PhilJay:MPAndroidCh原创 2016-12-19 17:11:33 · 4005 阅读 · 0 评论 -
Android 发现一个炫酷按钮库(ShineButton)
1.直接看效果图吧: 下面是使用方法: 2.添加依赖 compile 'com.sackcentury:shinebutton:0.1.6' compile 'com.jakewharton:butterknife:8.4.0' compile 'com.jakewharton:butterknife-compiler:8.4.0'3.Mainactivitypacka原创 2017-01-03 21:32:15 · 6372 阅读 · 1 评论 -
Android<我所理解的广播接收者>
1.广播Android应用可以发送或者接收来自系统或者其他应用的广播信息,这种模式神似设计模式中的观察者模式。Android系统广播消息: 当各种系统事件发生时,例如系统启动或者设备开始充电。应用程序还可以发送自定义广播,以通知其他应用。例如一些数据已经下载完毕。应用程序可以注册接收特定的广播。当发送广播时,系统自动将广播路由到已订阅接收该特定类型的广播的应用。2.接收广播应用程序可以通过以原创 2017-02-22 11:27:18 · 2252 阅读 · 0 评论 -
Android<我所理解的Activity>
1.什么是ActivityActivity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。一个应用通常由多个彼此松散联系的 Activity 组成。 一般会指定应用中的某个 Activity 为“主”Activity,即首次启原创 2017-02-22 13:20:11 · 536 阅读 · 0 评论 -
OKHttp3源码分析<CacheThreadPool线程池异步请求任务的执行>
1.线程池的好处几乎所有需要异步操作或者并发执行任务的程序都可以使用线程池,三个好处: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗; 提高响应速度:当任务到达的时候,任务可以不需要等到现成的额创建就能立即执行; 提高线程的可管理性:线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统稳定性,使线程池可以进行统一的分配、调优和监控。 2.O原创 2017-03-06 22:53:30 · 2847 阅读 · 0 评论 -
Android<我所理解的Fragment>
1.Fragment(片段 )是什么Fragment 表示 Activity 中的行为或用户界面部分。可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个片段。可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件;可以在 Activity 运行时添加或移除片段(有点像您可以在不同 Activit原创 2017-02-24 17:05:48 · 522 阅读 · 0 评论 -
Android<Fragment之间的通信以及Fragment和Activity的通信>
1.情景假设: 假设现在有一个需求,一个Activity中有FragmentLeft和FragmentRight的布局,在最下面有一个Textview的布局。 现在需要在FragmentLeft中的按钮被点击的时候,FragmentRight和Activity中的Textview做出响应,类似这种效果:2.解决办法:i.在FragmentLeft中定义一个接口: public interfa原创 2017-02-26 16:43:08 · 720 阅读 · 0 评论 -
Android<进程和线程在Android中的工作方式>
1.前言:当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。 但是可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程原创 2017-02-21 16:40:53 · 1253 阅读 · 2 评论 -
Android网络编程<我所理解的XML和JSON数据解析>
1.XML和JSON格式数据通常情况下,每一个需要访问网络的应用程序都会有一个自己的服务器,应用可以向服务器提交数据,也可以从服务器上获取数据。应用(客户端)和服务器之间 的数据传输常见格式有XML和JSON格式。 i.下面是XML格式的一个例子<apps><app> <id>1</id> <name>Google Maps</name> <version>1.0</ve原创 2017-02-24 11:38:07 · 2152 阅读 · 0 评论 -
Android<View的工作原理以及自定义View的方法>
来自《第一行代码》作者郭霖笔下,觉得写得很好遂分享给更多的人: Android LayoutInflater原理分析,带你一步步深入了解View(一) Android视图绘制流程完全解析,带你一步步深入了解View(二) Android视图状态及重绘流程分析,带你一步步深入了解View(三) Android自定义View的实现方法,带你一步步深入了解View(四)下面是一个自定义效果图:原创 2017-02-23 15:43:19 · 499 阅读 · 0 评论 -
Android<我所理解的Handler机制>
1.为什么需要Handler机制在我的<线程和进程在Android中的工作方式>中,明确地说明了应用启动时,系统会为应用创建一个名为“主线程”的执行线程。 此线程非常重要,因为它负责将事件分派给相应的用户界面小部件,其中包括绘图事件。 此外,它也是应用与 Android UI 工具包组件(来自 android.widget 和 android.view 软件包的组件)进行交互的线程。所以我们所有的涉原创 2017-02-23 11:24:01 · 3440 阅读 · 7 评论 -
Android<我所理解的Intent 和Intent-filter>
1.Intent Intent 是一个消息传递对象,可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity: Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了原创 2017-02-22 19:28:14 · 736 阅读 · 0 评论 -
Android retrofit历程(一)
1.简介 Retrofit是 Square 公司开源的适用于Android与Java的网络请求库,是对其先前开源的OKHTTP的进一步封装。 官网上的说这是一个为Android和Java打造的类型安全的HTTP客户端 2.一般客户端与服务器如何进行交互 android中客户端与服务器的交互和浏览器与客户端交互差不多 HTTP请求报文 HTTP响应报文 3.原创 2017-01-03 17:00:28 · 807 阅读 · 0 评论 -
Android studio中使用Live Templates提高工作效率
先看效果: 这是自动补全作者信息的的模板: 这是ifn(判断一个对象为空)和for循环 实现: 1.打开android studio,新建一个project。在没有修改热键的前提下:同时按下CTRL+ALT +S。如果已经修改了热键那就File->setting,在搜索框输入Live templates 2.点击右边+,新建一个group 输入组名,确认 3.新建模板原创 2017-01-02 18:17:14 · 2037 阅读 · 0 评论 -
Android 往Sqlitedatabase中插入大量数据效率问题,40倍效率加速你的操作
情景:我现在要往sqlite database中的表中(R_USER_QUESTION_DO_HISTORY)插入一万条数据1.我的代码: public void setUpDataBaseForUser(String userID) { String[] column = { Config.COLUMN_USERID, };原创 2016-11-27 14:17:10 · 7951 阅读 · 0 评论 -
Android 之AlertDialog
在进入整体之前,先来简单地了解一下什么是对话框,在安卓API中,对话框被定义为:对话框是提示用户做出决定或输入额外信息的小窗口,对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。诸如这样 : ,Dialog是对话框的基类,在使用对话框的时候要避免直接实例化Dialog,而是使用其子类之一(包括AlertDialog和DataPickerDialog或者TimePickerDia原创 2016-10-12 20:12:28 · 794 阅读 · 0 评论 -
Android 让真机调试(不使用数据线)成为可能
做安卓开发的时候,频繁地在真机上调试,导致的就是手机的USB接口越来越接触不良了….. 怎么办?下面实现无线调试工具准备:一部已经root 的手机,android SDK,PC(手机和PC要再同一局域网下,简单来说就是手机和PC链接的是同一个WIFI)第一步:下载安装adbwireless 地址在这里:http://download.youkuaiyun.com/download/gpwner/965955原创 2016-10-21 11:45:17 · 2391 阅读 · 0 评论 -
Android Glide以及其资源加载监听器的使用
1.什么是Glide glide是一个快速、高效的开源媒体和图像加载的安卓框架,是集媒体解码、磁盘缓存、内存,以及资源管理于一体的简单易用的接口。包括一个灵活的接口,使开发人员可以插入到几乎任何网络堆栈。默认情况下,使用一个基于堆栈的自定义你的滑翔,还包括工具库插件谷歌的排球项目或方形的okhttp库代替。这是github上的介绍,要是英语好的话,就忽略上面的中文吧,直接看其作者的解释 2.使用原创 2016-09-23 11:36:05 · 10294 阅读 · 0 评论 -
如何使用eclipse创建service(教程)
使用android studio创建service的时候,通过new就可以创建(并且会帮你在AndroidManifest中注册),但是当你使用eclipse的时候,你会发现其并不像 android studio。 解决办法: 首先你得创建一个类然后让其继承自service,需要导入的包是: import android.app.Service; import android.os.IBin原创 2016-09-06 19:38:46 · 7247 阅读 · 1 评论 -
Android为什么只能通过Handler机制更新UI
最根本的原因是解决多线程并发问题如果在一个activity中有多个线程去更新UI,并且没有加锁机制,那样会造成更新界面错乱。 也不能对所有更新UI的操作进行加锁,否则会导致性能下降 。Handler封装了消息的发送,解决多线程并发引发的问题,地址就是Messagetarget(默认情况发送给自己) Looper是消息承装的载体,内部包含一个消息队列,MessageQueue是消息队列,Loope原创 2016-09-18 13:23:28 · 1245 阅读 · 0 评论 -
安卓fragment知多少及其优点
一、Fragment要点Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()) Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们转载 2016-06-06 19:10:36 · 991 阅读 · 0 评论 -
安卓五大布局
Android中常用的5大布局方式有以下几种:线性布局(LinearLayout):顾名思义就是按照垂直或者水平方向布局的组件。帧布局(FrameLayout):组件从屏幕左上方布局组件,就像CSS中的多个盒子重叠在一起,组件有层次区分。表格布局(TableLayout):按照行列方式布局组件,组件被包裹在表格中。相对布局(RelativeLayout):相对其它组件的布局方式。 绝对布局转载 2016-05-22 10:30:01 · 1006 阅读 · 0 评论 -
Android 添加Library Dependencies(库依赖)的方法
如果你的项目要添加库依赖,你怎么添加呢?1.打开你的android studio->project structure 2.点击module,右侧会呈现,Properties、Singing、Flavors、Build Types、Depenendencies 3.点击Dependencies窗口右上角的的“+”号,选择第一项Library dependency 4.输入你要添加的库,原创 2016-09-27 15:47:27 · 12427 阅读 · 3 评论 -
Android中的SQLite数据存取以及简单例子(源码)
1.定义架构和契约SQL 数据库的主要原则之一是架构:数据库如何组织的正式声明。 架构体现于您用于创建数据库的 SQL 语句。您会发现它有助于创建伴随类,即契约 类,其以一种系统性、自记录的方式明确指定您的架构布局。 契约类是用于定义 URI、表格和列名称的常数的容器。 契约类允许您跨同一软件包中的所有其他类使用相同的常数。 您可以在一个位置更改列名称并使其在您整个代码中传播。 组织契约类的一种原创 2016-09-21 22:03:58 · 1724 阅读 · 0 评论 -
Android 往activity添加fragment的三种add()方法
在写 FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add 这几行代码的时候,android studio会自动地给我们提示。要想区分这三个原创 2016-12-11 22:19:11 · 23681 阅读 · 2 评论 -
Android如何导入外部已存在的数据库文件(附源码)
*以下经验,来源于个人在写项目的时候,遇到的问题.前些时间我正在做一个项目,由于项目需要用到已有的外部数据库文件。第一想法就是直接通过输入输出流将文件拷贝到database目录下,但是怎么样拷贝才算是比较好的呢?经过一波查阅API,Google,终于找到了比较好的办法,在这里将这个过程记录下来。1. 首先明确目标,要将桌面的data.sqlite文件导入并且在app中使用 2.然后在And原创 2016-11-17 09:43:28 · 7677 阅读 · 2 评论 -
Android中给App设置NoActionBar/FullScreen
因为现在博主在学习安卓,有的时候难免会有设置整个程序无标题和全屏的要求,在百度上搜索有好几个 解决办法,但是有的时候的那些办法好用,有的时候不好用。 现在找到一个办法,博主自己测试时屡试不爽的,特别好用,现在分享出来,希望对和博主一样的安卓初学者有帮助。直接上代码吧:AndroidManifest.xml中的代码:<?xml version="1.0" encoding="utf-8"?><m原创 2016-05-29 19:48:17 · 12670 阅读 · 0 评论 -
Android Studio开发常见异常(合辑)
1.错误:Error:Could not find com.android.tools.build:gradle:2.2.2.Searched in the following locations: https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.2.2/gradle-2.2.2.pom https:/原创 2016-10-28 13:17:16 · 1517 阅读 · 0 评论 -
初识Android序列化与反序列化
最近在学习Rxjava相关的内容,从github上clone别人写项目来学习,发现Parcelable这个接口,google了一下,发现这个东西还挺重要的,于是决定巴拉巴拉,加深一下自己的认识1.什么是序列化和反序列化序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化原创 2016-10-29 22:05:36 · 1913 阅读 · 0 评论 -
在Androidstudio中clone github上的自己喜欢的项目(一步到位)
最近无意间发现了一个AndroidStudio的一个功能: 当你在github上发现了一个比较好的项目,你想clone来研究研究。以前我会git git@github.com:Gpwner/项目名,然后在导入AndroidStudio中,感觉很麻烦啊,需要的时间也比下面我要说的方法慢得多。首先你得在github上登录你得账户,然后找到你喜欢的android项目,然后fork 第二步打开and原创 2016-10-27 22:19:19 · 1789 阅读 · 0 评论 -
Buffer Knife8.4.0的配置以及使用
众所周知,Buffer knife是一个很棒的开源库。 他的好处在哪里呢? 现如今他已经更新到了8.4.0版本了。想想我们之前是如何给XML中的控件添加一个引用和设置监听事件的,没错就是很多个FindViewByID,然后类型强制转换。特别是在添加监听事件的时候,还需要实现接口,实现方法,个人感觉是很浪费时间的。然而当你使用了butterKnife之后,你之前所做的工作都将会得到简化。假设我们有原创 2016-10-01 20:05:44 · 1579 阅读 · 0 评论 -
Android之Slidingmenu使用与其常用属性说明
相信对SlidingMenu有一定的了解的朋友菜会点看这篇文章的, 其效果也是很棒的,效果图: 有关SlidingMenu的详细介绍请看GITHUB上的介绍(https://github.com/jfeinstein10/SlidingMenu),在这里我就简单带过了,他就是一个开源库。如何在android studio中使用slidingmenu呢? 第一步,新建一个android项目是必不原创 2016-09-13 13:41:52 · 1297 阅读 · 0 评论 -
Eclipse安装ADT之后工具栏没有Android sdk and avd manager等问题解决方案
Eclipse安装ADT之后工具栏没有Android sdk and avd manager等问题解决方案1.打开窗口 2.perspective->定制视图->快捷方式->把有关安卓的勾起,大功告成附件是截图教程原创 2016-05-21 08:05:20 · 1531 阅读 · 0 评论