自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android修改状态栏和导航栏背景色

修改styles//状态栏颜色<item name="android:colorPrimaryDark">#fcfcfc</item>//导航栏颜色<item name="android:navigationBarColor">#fcfcfc</item>在代码中修改//添加变色标志this.getWindow().getDecorView().setSystemUiVisibility(V

2017-11-24 09:31:36 6090

原创 修改ActionBar背景色和返回图标

//修改背景色 getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#fcfcfc"))); //修改返回图片getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeAsUpIndicat

2017-11-23 16:43:20 860

转载 FastJSON、Gson和Jackson性能对比和共同缺点,注意事项

先说重点: JAVA是一种 强类型语言,这三种都是在后台每次返回的数据解析bean,不出错的情况下进行性能对比的,如果你之前的bean,有个字段为String类型, 而后台有次给你返回一个[] 空的数组等,这个时候,三种都会导致解析失败他们容错性在java强类型语言中表现不好.所以前提是都解析成功的情况下进行对比,如果想避免这种错误,就学习安卓的新语言Ktolin,他是弱类型语言,就不会产生这个问题

2017-11-22 16:08:34 15025 2

原创 Android 自定义View画一条线

自定义View代码:public class NavBarBackgroundView extends View { private Paint mPaint = new Paint(); public NavBarBackgroundView(Context context) { this(context,null); } public NavBarBac

2017-10-20 10:16:02 6719

原创 Android 播放多媒体文件

1.播放音频 在Android中播放音频文件一般都使用MediaPlayer类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单,下面是MediaPlayer类中的一些比较常用的控制方法setDataSource() //设置要播放的音频文件的位置prepare() //在开始播放之前调用这个方法完成准备工作start() //开始或继续播放音频pa

2017-09-15 15:17:30 535

原创 Android 使用摄像头和相册

1.调用摄像头拍照 新建一个CameraAlbumTest项目,然后修改activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent"

2017-09-15 10:22:33 1208

原创 Android Notification

通知(Notification)是Android系统比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不再前台运行,就可以借助通知来实现. 1.通知的基本用法 通知即可以在活动里创建,也可以在广播接收器里创建,不论在哪里创建,整体步骤都是相同的,首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemService

2017-09-14 15:43:39 429

原创 Android 实现跨程序数据共享栗子

直接上代码public class DatabaseProvider extends ContentProvider { public static final int BOOK_DIR = 0; public static final int BOOK_ITEM = 1; public static final int CATEGORY_DIR = 2; publi

2017-09-13 17:23:17 371 1

原创 Android ContentProvider

在自己的应用程序中访问其他应用程序的数据,只需要获取到该应用程序的内容Uri,然后借助ContentResolver进行CRUD操作就可以了.那些提供外部访问接口的应用程序都是如何实现这种功能的,怎样保证数据的安全性,使得隐私数据不会泄露出去. 1.创建内容提供器的步骤 可以通过新建一个类继承ContentProvider的方式来创建一个自己的内容提供器,ContentProvider共有6个抽

2017-09-13 10:44:53 222

原创 Android ContentResolver

1.ContentResolver的基本用法 对于每一个应用程序来说,如果想要访问内容提供器中的共享数据,就一定要借助ContentResolver类,可以通过Context中的getContentResolver()方法获取到该类的实例,ContentResolver中提供了一系列的方法用于对数据进行CRUD 操作.其中insert()方法用于添加数据,update()方法用于更新数据,del

2017-09-13 09:37:47 2846

原创 Android 运行时权限

1.Android权限机制详解 访问系统的网络状态以及监听开机广播,在AndroidManifest.xml中添加权限声明<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.runtimepermissiontest"> <uses-permission

2017-09-12 16:06:50 235

原创 Android 使用LitePal操作数据库

1.LitePal简介 LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和增删改查的操作,LitePal的项目主页上也有详细的使用文档,地址是:http://github.com/LitePalFramework/LitePal 2.配置LitePal 要使

2017-09-11 16:37:15 9641 4

原创 Android SQLite数据存储

SQLite是一款轻量级的关系型数据库,它的运行速度非常快,占用资源很少,通常只需要几百KB的内存就足够了,因而特别适合在移动设备上使用,SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务,所以只要你以前使用过其他的关系型数据库,就可以很快的上手SQLite,而SQLite又比一般的数据库要简单很多,它甚至不用设置用户名和密码就可以使用,Android正是把这个功能极为强大的数据库嵌

2017-09-11 10:30:35 389

原创 Android SharedPreferences

不同于文件存储,SharedPreferences是使用键值对的方式来存储数据的,也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来,而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型,如果存储的数据类型是字符串,那么读取出来的数据也是字符串. 1.将数据存储到S

2017-09-08 09:39:09 260

原创 Android 文件存储

文件存储是Android中最基本的一种数据存储方式,它不对数据进行任何的格式化处理,所有的数据都是原封不动的保存在文件中去,因而比较适合用于存储一些简单的文本数据或二进制数据,如果你想使用文件存储的方式来保存一些较为复杂的文本数据,就需要定义一套自己的格式规范,这样可以方便之后将数据从文件中重新解析出来. 1.将数据存储到文件 Context类中提供了一个openFileOupput()方法,可

2017-09-07 11:26:53 1517

转载 Git

1.安装Git Linux系统: sudo apt-get install git-core Windows系统: 先下载Git安装包,地址:http://git-for-windows.github.io/ 然后直接安装安装好了之后应该配置一下你的身份 git config –global user.name “Tony” git config –global user.email “

2017-09-07 10:19:40 312

原创 Android 使用本地广播

前面我们发送和接收的广播都是系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自其他任何应用的广播,这样就容易引起安全性的问题,比如我们发送的一些携带关键性数据的广播有可能被其他的应用程序截获,或者其他的程序不停的向我们的广播接收器里发送各种垃圾广播. 为了能够简单的解决广播的安全性问题,Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序内部进行

2017-09-07 09:11:10 313

原创 Android 发送自定义广播

1.发送标准广播 在发送广播之前,我们需要先定义一个广播接收器来准备接收此广播才行,不然发出去也是白发, 创建MyBroadcastReceiver.代码如下:public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context con

2017-09-06 09:07:48 642 1

原创 Android 广播

Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自系统的,也可能是来自其他应用程序的. Android提供了一套完整的API,允许应用程序自由的发送和接收广播, 1.标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没

2017-09-05 16:23:08 233

原创 Android RecyclerView

RecyclerView是一个强大的滚动控件,可以说是一个加强版的ListView,不仅可以实现ListView的效果,还优化了ListView的不足之处, 1.RecyclerView的基本用法 要想使用RecyclerView这个控件,首先要在项目的build.gradle中添加相应的依赖库才行 打开app/buile.gradle 文件,在dependencies闭包中添加如下内容:de

2017-09-04 16:16:05 227

原创 Android ListView

1.ListView的简单使用在布局中加入ListView控件,先为ListView指定一个id,然后将宽度和高度设为match_parent,这样ListView就占满了整个布局空间.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_par

2017-09-04 09:02:23 234

原创 Android RelativeLayout

RelativeLayout又称为相对布局,也是一种常用的布局,和LinearLayout的排列规则不同,RelativeLayout显得更加随意一些,它可以通过相对定位的方式让控件出现在布局的任何位置<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=

2017-09-02 15:48:02 180

原创 Android LinearLayout

LinearLayout又称为线性布局,是一种非常常用的布局,这个布局会将它所包含的控件在线性方向上依次排列<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_p

2017-09-02 15:31:12 267

原创 Android 常用控件

1.TextView<TextView android:id="@+id/text_view" android:layout_width="match_parent" android:Layout_height="wrap_content" android:text="This is TextView"/>android:id给当前控件指定唯一的标识符 androi

2017-09-02 10:21:02 761

原创 Android 传递数据

1.Intent 向下一个活动传递数据Intent启动活动的时候传递数据其实很简单,Intent提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需把这些数据从Intent中取出来就可以了.String data = "hello SecondActivity"Intent intent = new Intent(this,Second

2017-09-01 10:25:42 218

原创 Android Intent

1.显式Intent Intent有多个构造函数的重载,其中一个是:Intent(Context packageContext,Class<?> cls).这个构造函数接收两个参数,第一个参数Context要求提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数就可以构建出Intent的意图. Intent的使用:Intent intent = ne

2017-08-31 08:50:39 217

原创 Android Toast

1.默认显示// 第一个参数:当前的上下文环境。可用getApplicationContext()或this // 第二个参数:要显示的字符串。也可是R.string中字符串ID// 第三个参数:显示的时间长短。Toast默认的有两个LENGTH_LONG(长)和LENGTH_SHORT(短),也可以使用毫秒如1000msToast toast=Toast.makeText(getApplic

2017-08-29 16:13:15 324

原创 adb shell

//调试adb shellam start -D -n 包名/启动时的类名am start -D -n com.guyu.android.fliggyautomator/.MainActivity //点击 AS中的Attach debugger to android process//打断点//点击F8下一步class StartUiAutomator extends Thread {

2017-08-29 14:43:44 419

原创 UI automator的使用

1.获取UiDevice实例,模拟对Device的一系列的操作mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());//从home开始mDevice.pressHome();// Wait for launcher等待launcherfinal String launcherPackage = m

2017-08-29 14:40:24 321

原创 Activity和View

Activity是Android应用中负责和用户交互的组件,大致上可以认为是Swing编程中的JFrame控件. 区别在于: JFarme本身可以设置布局管理器,不断的向JFarme中添加组件. Activity只能通过setContentView(View)来显示指定组件. View组件是所有UI控件,容器控件的基类,View组件就是Android应用中用户实实在在看到的部

2017-08-23 11:41:16 3130

原创 ContentObserver 的原理

ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器,相应地ContentObserver也分为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的

2017-08-23 10:35:47 2810

原创 AppOps原理

1.AppOps简介AppOps全称是 Application Operations,类似我们平时常说的应用程序的操作(权限)管理。AppOps是Google原生Android包含的功能,但是Google在每次版本更新时都会隐藏掉AppOps的入口。注意:AppOps虽然涵盖了App的权限管理,但是Google原生的设计并不仅仅是对“权限”的管理,而是对App的“动作”的管理。我们平时讲的权限管理多

2017-08-23 10:31:39 3531

原创 Android 数据共享

ContentProvider的概述 由官方的定义我们可以得知它是一个管理访问结构化数据的机制。我们系统中有些数据很重要,不能让人随便访问,但是因为比较有价值,所以很多应用程序需要用到它,这是就可通过ContentProvider这个机制,压缩数据,提供安全定义、访问数据的机制。该机制提供一个借口,使得应用程序能从该进程访问另外一个应用程序的数据。 不仅是系统重要的数据,如果我们开发过程中

2017-08-23 10:24:38 2371

空空如也

空空如也

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

TA关注的人

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