- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 Android可缩放矢量图形(SVG)
以下为心形图标的xml文件:<!-- res/drawable/heart.xml --><vector xmlns:android="http://schemas.android.com/apk/res/android" <!-- 生成图形的尺寸 --> android:height="256dp" android:width="256dp" <!-- 虚拟画布的
2017-03-26 19:04:30
2061
原创 Android自定义WheelView的40行关键代码
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { View firstVisibleView = view.
2016-05-08 22:55:54
1545
原创 Git使用指南(一):初始化配置
1.5 起步 - 安装 Git 分布式版本控制系统Git的官网下载地址:http://git-scm.com/download1.6 起步 - 初次运行 Git 前的配置控制 Git 外观和行为的配置文件存储在三个不同的位置(后者会覆盖前者):1、系统级:/etc/gitconfig 文件,包含所有用户及他们仓库的通用配置。若要用git config命令来修改配置,需加上--system选项。2
2016-03-04 00:14:28
801
原创 Git使用指南(二):常用命令
注:目录(文件夹)的处理方式(递归处理其子文件)与文件雷同,下文将它们合称为文件。1.3 起步 - Git 基础2.2 Git 基础 - 记录每次更新到仓库添加文件// 开始跟踪新文件 或 把已跟踪的(且又有新改动的)文件放到暂存区。$ git add README// add还能用于合并时把有冲突的文件标记为已解决状态等检查当前文件状态$ git status状态简览$ git status -
2016-02-28 22:30:46
469
原创 (未完成)Android版本更新变迁
Android 6.0(API 23,代号棉花糖Marshmallow) 1、运行时授权(Runtime Permissions) 应用将在运行时获取用户授权,而不是在安装时。 权限分为两种:普通权限,不会触及用户隐私,系统自动准许;危险权限,能访问到用户的私密数据,需要用户明确地授予。 2、打盹模式和APP待机(Doze and App Standby) 当设备未
2016-02-28 22:28:48
535
原创 Android媒体播放:MediaPlayer
一、基本的类 MediaPlayer 播放音频和视频。 AudioManager 管理音频资源和音频输出。三、使用MediaPlayer 播放应用的内置raw资源:MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);// create()中已调用prepare(),不必再调用后者mediaP
2015-12-04 13:18:16
941
原创 让Android应用保持灵敏响应:AsyncTask
任何可能需要较长时间的操作都不应该放在UI主线程里,而应该创建一个工作线程去处理。当前台Activity未在5秒内对用户点击事件或者BroadcastReceiver接收到广播后未在10秒内返回,Android就会抛出一个应用无响应(ANR)的对话框,以供用户选择是否关闭该应用。如何避免ANR?创建一个处理长时间操作的工作线程的最佳方式是继承AsyncTask类:// AsyncTask<Param
2015-11-25 01:30:44
727
转载 Android进程和线程
当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。 但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。本文档介
2015-11-24 00:10:28
490
原创 Android进程间通信(二):AIDL
AIDL (Android Interface Definition Language)即Android接口定义语言。若需多线程同时处理其他应用进程的请求才有必要使用AIDL。如果不需多线程交互,则可使用Messager(请看《Android进程间通信(一):Messager》);而如果不需跨进程通信,使用Binder即可。 AIDL接口通常与Service联合使用。客户端通过bindServic
2015-11-23 22:45:35
686
原创 任务和返回栈
打开一个最近未使用过的APP时,系统会创建一个新的任务(它是一个后进先出的栈),把APP的主Activity放入其中。默认模式下,后续启动的获得用户焦点的Activity会堆叠在栈顶。当用户按下返回键时,栈顶的Activity会被弹出销毁,并返回前一个Activity(此时为新的栈顶)。一个任务可以包含不同APP的Activity(比如APP A启动了APP B的Activity来拍照),一个Act
2015-11-21 19:47:22
521
原创 给ListView异步加载Cursor
LoaderManager 每个Activity或者Fragment只有一个LoaderManager, 它可以根据前两者的生命周期来管理若干个Loader。LoaderManager.LoaderCallbacks 它提供三个接口和LoaderManager进行互动:onCreateLoader(怎么创建一个Loader)、onLoadFinished(当某个Loader加载完毕)、onLo
2015-11-11 19:27:17
629
原创 数据保存(三):数据库
一、继承SQLiteOpenHelper类public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "wesnoth.db";
2015-11-04 00:24:53
535
原创 数据保存(二):文件
Internal Storage指内部存储,每个应用都有属于自己的目录:/data/data/应用程序包名,适合保存较小的流式数据,比如截图、铃声等。// 如果没有context对象或者想缓存(临时)文件if(!hasContextAndNotCache){ // 1.获取文件夹 File dir = null; if(isCache) { //
2015-11-02 01:42:16
613
原创 数据保存(一):SharedPreference
方法一:SharedPreference 适合保存零散的不重要的数据, 以键值对的形式保存在/data/data/应用程序包/shared_prefs目录下的xml文件中。SharedPreferences sharedPreferences = null;// A.获取SharedPreferences对象if (noName){ // 这种方式的文件名为“Activity的类名.x
2015-11-01 23:57:04
596
原创 用Fragment创建模块化组件
Fragment类似于Activity,有自己的layout布局,也有一系列相关的生命周期方法。在Activity运行(resumed)期间,它的生命周期可以独立地控制,但当Activity停止或销毁时,尚未销毁的它将一起被停止或销毁。它是View的子类ViewGroup的子类。package com.company.app;import android.app.Fragment;import a
2015-10-23 23:47:29
924
转载 将输入流(InputStream)转换为位图(Bitmap)
InputStream is = null;...Bitmap bitmap = BitmapFactory.decodeStream(is);ImageView imageView = (ImageView) findViewById(R.id.image_view);imageView.setImageBitmap(bitmap);
2015-10-03 21:00:00
9468
转载 Android连接网络
一、所需权限:<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />二、关键方法public class HttpExampleActivity extends Activity {
2015-10-03 20:49:49
488
原创 Android适配不同语言、屏幕,提高兼容性
一、语言适配MyProject/ res/ values/ // 默认英文en strings.xml values-es/ // 适配西班牙语 strings.xml values-fr/ // 适配法语 strings.xml二、屏幕适配调
2015-09-18 23:34:09
1187
原创 Android布局相关
一、关于layout_weight<LinearLayout android:orientation="横向或垂直" ...> <EditText android:layout_weight="布局比重值" ... /> ...</LinearLayout>布局比重(layout_weight)属性只在线性布局(LinearLayout)中
2015-09-18 23:22:30
456
转载 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-09-18 22:44:59
373
原创 Android进程间通信(一):Messenger
Messeger适用于跨进程通信时不需多线程交互的情况。如若需要跨进程多线程交互,可以使用AIDL(请看《Android进程间通信(二):AIDL》)。一、可运行代码类(Runnable)public interface Runnable { /** * 把需要运行的代码放在这个方法中 */ public void run();}二、线程类(Thread类)p
2015-06-23 19:18:50
770
原创 用户界面(Activity)初探
一、简介Activity是应用的用户界面,它运行于进程的主线程中。为了良好的用户体验,它的代码执行速度要尽可能地快。二、启动ActivityActivity有两种启动方式,一种是用户点击应用图标进入应用的主Acitivity,一种是根据需要用代码启动某个Activity。前者是由系统在应用的AndroidManifest.xml文件(所有Activity都应该在它里面注册相应的节点)中找到包含以下i
2015-06-19 11:50:15
628
原创 后台服务(Service)简述
一、简介Service是应用的后台服务,它用来执行不需与用户交互的、耗时的操作,或者给其他应用提供一些功能。Service默认运行在用户界面(Activity)所在的主线程中,所以它的执行速度越快越好。如果有耗时较长或者会阻塞的操作,可以在Service中创建一个线程去完成它。若Service的执行时间超过5秒,系统会抛出“应用程序无响应(ANR)”的对话框。二、注册Service所有Service
2015-06-18 17:43:52
2266
原创 广播接收者(BroadcastReceiver)详解
广播是一种传递信息的机制,广播接收者(BroadcastReceiver)可以监听它所感兴趣的广播。每当指定的广播到来时,系统都会重新构造广播接收者对象并调用其onReceive方法,调用完毕后它便会被销毁。广播接收者运行在主线程中,所以它的执行速度越快越好,若未在10秒内完成会导致系统抛出“应用程序无响应”的对话框。
2015-06-16 17:34:12
1444
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人