自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Elven_Shi的专栏

志之难也,不在胜人,在自胜

  • 博客(78)
  • 资源 (7)
  • 收藏
  • 关注

原创 从技术角度分析Android APP防杀措施

概述 由于Google的推送服务在国内无法使用,开发人员就不得不采用特殊手段保证app不被杀死,使其能够长期驻留。不让app被杀,目的只有一个,就是保证tcp长链接,tcp消息能够必达。其实,让app不会被杀掉,一直处于运行状态。不论从用户角度,还是从Android生态环境的角度其实都是不推荐的。对于用户而言,app的长期驻留,导致其耗电加剧,CPU无法休眠,长期占用资源;对于Android生态

2017-01-04 11:47:54 1649

原创 Android开发过程中so调用出现的常见问题分析

概述 现在大部分app都会引入so文件,引入so的目的都是为了解决依赖于java本身所无法解决,或者说不能高效解决的问题。例如音视频编解码,百度地图,音频格式转换等等。都会无一例外的引入so,都会依赖于C/C++来解决。我们在日常开发的过程中,在引入第三方so库的时候也会出现一些问题。下面就列出一些常见的问题,并对问题作出相应的分析。常见问题及分析常见问题一,提示调用的native 方法未实现

2017-01-04 10:47:22 2115

原创 Android 6.0运行时权限处理

运行时权限介绍Android 6.0在原有的AndroidManifest.xml声明权限的基础上增加了动态申请运行时权限。新增的运行时权限有 身体传感器、日历、摄像头、通讯录、地理位置、麦克风、电话、短信、SD卡存储。运行时权限处理方式Android targetSdkVersion在23以下(不包括23),不需要动态申请运行时权限,所以可以通过降低targetSdkVersion的方式可以解决运

2016-12-30 14:48:33 849

原创 利用RxJava实现的事件总线(Event Bus)

概述RxJava 在Android的APP开发中使用越来越广泛,其实不只是Android项目,java web方向的使用也越来越广泛。好多公司现在都开始引入RxJava和RxAndroid。RxJava对于开发效率,降低维护成本具有很大的作用。RxJava采用的设计模式是典型的观察者模式,是一种响应式编程,支持链式操作。RxJava到底是什么?RxJava(RxJava在GitHub上的托管地址 )

2016-11-11 10:14:02 1740

原创 Android资源文件目录assets和raw

assets 资源目录或者叫资产目录,里面存放的是无法直接访问的原生资源。与res属于同级目录。应用程序需要通过AssetsManager以二进制流的形式读取文件。应用程序编译的时候不会在R类中为assets目录下的文件创建索引。raw在res目录下(res/raw)也是用于存放一些资源文件的。应用程序编译的时候raw目录下的资源文件会在R类中生成索引res/raw与assets的比较相同点:都是

2016-11-07 10:14:17 1583

原创 Android Studio中导入v4,v7和recyclerview-v7包的方法

概述 Android Studio中新建工程中会默认导入v7的包,即在gradle中默认配置了com.android.support:appcompat-v7:x.x.x的依赖。但是不会默认为我们配置v4和recyclerview-v7包,如果项目中用到这两个包,需要我们手动在gradle中配置这两个包的依赖。下面介绍一下配置方法。配置方法直接上图: 第一步: 第二步: 第三步:

2016-11-04 15:23:59 25522 6

原创 ViewPager + GridView实现GridView分页

概述 通过ViewPager实现GridView的分页实现 ViewPager通过设置PagerAdapter实现分页。每一页的布局是一个GridView。GridView通过设置自己adapter渲染GridView。 ViewPager:分页器。 GridViewPageAdapter:继承自PagerAdapter。ViewPager的适配器。 GridView

2016-11-04 14:37:07 3527 4

原创 Android性能优化

Android性能优化方案布局优化尽量减少layout层级,减少界面绘制的工作量。 采用,标签自定义View的绘制onDraw中不要创建大量的局部对象。因为onDraw方法会被频繁调用,这样就会在一瞬间产生大量的临时对象,不仅会占用过多内存还会导致系统频繁GC,降低程序执行效率。 onDraw中不要做太多耗时才操作。内存优化静态变量导致的内存泄露 示例:一个外部的静态Context变量引用了

2016-10-28 17:28:55 564

原创 Android之Sqlite开发中可能被你忽视的细节

概述 Sqlite是在Android日常开发中使用的还是比较频繁的。有的同学可能会说:“我平时用的就不多”。一种情况是你用的第三方的开源库比如realm,或者是ORM型的GreenDao等,甚至有的还用了key-value形式的Snappy DB。另一种情况确实是开发中数据库用的少,但是这种情况很少。我们用Sqlite可能很熟练,但是对于一些细节,可能做了很长时间开发的同学有好多细节的地方还是不

2016-10-28 17:21:05 940

原创 Android之Bitmap

加载Bitmap BitmapFactory类提供了四类方法用来加载Bitmap:1、decodeFile(...) 通过图片路径加载,同时可以选择是否设置options,不设置则采用默认options。 例子: Bitmap bm = BitmapFactory.decodeFile(sd_path)采用默认options Bitmap bm = BitmapFactory.decod

2016-10-28 16:59:23 568

原创 ListView性能优化总结

ListView的优化总结1、重用ConvertView 我们都知道getView在首次调用的时候,convertView是null,所以这个时候就需要创建ItemView的layout。后续调用的时候就不需要了,因为此时的convertView已经不为null了。所以,convertView可以复用。不用每次都用inflate一下ItemView的layout布局,如果每次inflate,这样

2016-10-28 16:46:15 501

原创 ListView、GridView的通用型adapter

概述 本篇主要是基于之前的通用型adapter的调整。通用型的adapter中的context不再通过传入的方式进行。而是直接使用application。同时讲ViewHolder这个内部类抽取出来,不再放在通用adapter中。通用型adapter的使用在ListView上的使用 ListView布局,ListView的adapter不再赘述,直接看代码:ViewHolder代码:

2016-10-27 17:21:41 667

原创 WebView你所不知道的细节

WebView你所不知道的细节 WebView的实现主要依靠WebView和WebSettings这两个类来实现。WebView提供容器,WebSetting设置WebView支持的属性。WebView使用过程中需要注意的地方1、在实例化WebView的时候尽量不要使用当前Activity的引用。用代码New一个WebView而不是在XML中静态写入。 我曾经看到有个哥们利用LeakCana

2016-10-26 14:40:56 1591

原创 通用型adapter

Android开发中经常会用稿ListView和GridView。自然也就离不开adapter,一般情况下,都是去继承BaseAdapter,然后实现getCount(),getItem(...),getItemId()和getView(...)。这种方式如果有多个ListView就会显得比较繁琐,每个ListView都要实现这几个方法。效率也比较低。所以,我们可以抽取共性,定一个通用的Adapt

2016-07-18 11:05:31 778

原创 禁止ViewPager的左右滑动事件

Android开发中ViewPager用到的频率还是比较频繁的,我们知道ViewPager有左右滑动的监听事件。有时候我们不想使用它的左右滑动监听,想要去掉,我们该怎么办?这时候我们布局的时候不要直接用v4包下面的ViewPager,而是实现新建自己的ViewPager继承v4下面的ViewPager,复写onTouchEvent和onInterceptTouchEvent方法。这两个方法主要是用

2016-07-12 15:53:16 6492 1

原创 Android的startActivityForResult用法简单介绍

转载注明出处:Activity的跳转方式有两种,一种是startActivity直接跳转,另一种是startActivityForResult,带有数据回传的跳转。新建一个FirstActivity类package com.example.androidtest1;import android.app.Activity;import android.content

2016-07-11 16:01:06 860

原创 Android网络相关操作类

平时开发过程中,可能需要对Android的当前网络做判断。判断其是否是wifi网络,或者是否是移动数据网络。为什么需要判断当前网络类型。比如音乐播放器,当用户想要下载某首歌的时候,如果是移动数据网络就需要提醒用户当前是移动数据网络,继续下载将会消耗移动数据流量,产生流量费等等。这样会显得比较友好,用户体验也相对较好。如果是WIFI网络就直接下载。下面提供一个简单的工具类,用来判断当前网络是否可用,

2016-07-11 15:02:47 718

翻译 Android如何选择targetSDKVersion

转载请注明出处:英文原文 Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion 概述Android开发的应该都见过compileSdkVersion、minSdkVersion 以及 targetSdkVersion。compileSdkVersion和minSdkVersion比

2016-06-24 11:02:02 4044

原创 Android四大组件之Service详解

一、Service简介Service和Activity一样都是Android的四大组件之一,不同的是Activity显示图形用户界面,而Service的运行是不可见的。如执行Intent查找、处理数据,更新ContentProvider、激活Intent和触发Notification。Activity在它的生命周期内定期启动、停止和重新创建,而Service则被设计为长生命周期的。用来执行一些

2016-06-17 17:38:34 1249

原创 ContentProvider

ContentProvider简单使用事例AndroidManifest配置<!-- authorities 主机名 --><provider android:name="com.glinkus.icare.contentProvider.ContactProvider" android:authorities="com.android.glinkus.icare.Cont

2016-05-17 09:10:34 541

原创 Android之检查用户是否授予了App所需权限

转载请注明出处:很多应用在使用的时候,都需要用户授予该APP所需的权限,只有授予APP所需的权限,APP的特定功能才能被使用,否则是无法使用APP的相关功能的。比如录音,如果用户不授予APP录音 的权限,则APP就无法进行录音除非用户主动授予。有的时候用户一不小心禁用APP的某个权限,用户也没有注意到,在下次打开的时候,由于用户已经禁用了该权限,所以就不在提示是否开启,而是直接禁用。那么如何做

2016-04-29 09:37:15 4485

原创 Android之AsyncTask的内存泄露问题

AsyncTask是Android提供的一种用于异步处理数据的异步类,使用AsyncTask可以不用直接使用Thread和Handler来处理后台操作。AsyncTask被引入到Android中就被贴上了"无忧线程"的标签,目的是为了让子线程与UI线程交互更加简单容易。AsyncTask其本质是一个由5个核心线程组成的,最大队列数为128的线程池。我们在使用的过程中,通常会重写doInBackgr

2016-04-25 22:41:13 5097 3

原创 Android之下拉与上拉刷新

转载请注明出处:Android日常开发中,对于下拉与上拉刷新控件的使用非常之频繁。一般都会采用第三方库,但是下拉刷新做到简单优雅并不是太多,甚至有的兼容性都存在问题。这个是不能接受的。最近在github上面看到一位哥们提供的下拉刷新的库非常不错,非常简洁。所以今天把它推荐给大家,供大家日常开发使用。文章结尾会给大家提供Demo供各位下载参考使用。Demo中一共提供四种下拉/上拉刷新。Lis

2016-04-25 11:33:12 5277

原创 Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86

转载请注明出处:简介在Android日常的开发过程中有的项目需要引入第三方的库,有时候大家可能会在libs文件夹下看到mips、armeabi、armeabi-v7a和x86这四个文件夹。那么这三个文件夹下面的包是干什么用的?这三个包下面存放的用C编译的本地库文件(各类『.so』文件)。mips、armeabi、armeabi-v7a和x86都表示CPU的类型。一般的手机或

2016-04-21 10:03:35 14638

原创 Android引导页设计

转载请注明出处: 现在有几乎所有的APP在首次使用的时候都会有引导页,引导页的内容也都是和App相关的内容。如何去简单去设计扩展性好的引导页是很重要的。今天就为大家提供一种结合ViewPager引导页的设计方式,很简单。首先创建引导页布局文件activity_guide.xml<RelativeLayout xmlns:android="http://schemas.android.c

2016-04-20 17:58:42 2319

原创 Android之利用RemoteViews自定义Notification

转载请注明出处:这是对别人劳动成果的尊重。一、概述RemoteViews从字面上看是一种远程视图。RemoteViews具有View的结构,既然是远程View,那么它就可以在其他进程中显示。由于它可以跨进程显示,所以为了能够更新他的界面,RemoteViews提供一组基础的操作用于跨进程更新它的UI。RemoteViews在Android日常开发中最常见的使用场景有两种:通知栏

2016-04-18 12:47:33 4932 1

原创 Android之为图片创建Uri路径

有时候我们需要为拍出的照片或者裁剪的图片指定保存路径。那么如何为图片创建保存路径呢?方法有两种:第一种是直接创建url或者file路径。第二种是创建Uri路径。创建创建url或者file路径:/** * 制作图片的路径地址 * @param context * @return */ public static String createPath(Context

2016-04-18 09:45:55 4601

原创 Android之图片旋转

我们在开发过程中,利用app通过API去调用系统相机拍照的时候,不同的机型有时候拍出来的图片角度不对,被旋转了90°或者180°。例如三星的S4,在调用其相机拍照的时候,拍出来的照片就旋转了90℃或者是270℃。这不是我们想要的,遇到这种情况不得不手动将拍出来的照片旋转一定的角度。下面就大家提供关于图片旋转的方法。图片旋转算法:/** * 读取图像的旋转度 * @par

2016-04-18 09:35:02 1404

原创 Android之常见的图片压缩算法

有时候我们在日常开发过程中,由于项目需求,需要上传图片,例如上传头像等等。但是有时候,由于原图过大我们又不能让用户上传原图,需要对图片的进行压缩,才能上传。这里为大家提供一些常用的图片压缩算法,帮助大家在日常开发过程中解决图片上传时,图片压缩的问题。上一篇的博文http://blog.csdn.net/loveyaozu/article/details/51160482中其实已经为大家提供了图片的

2016-04-18 09:28:19 2123

原创 Android之本地相册图片选取和拍照以及图片剪辑

转载请注明出处:相信有很多Android开发人员在日常开发中,由于项目需求,需要我们的APP能够从相册中选取图片并剪辑,以及拍照剪辑后上传的功能。如果之前你没有做过这个功能,刚开始做的时候可能会遇到一些列的问题,这些问题大多是细节上的问题。今天,就根据自己的开发经验,给大家提供一套完成的相册图片选取剪辑和拍照剪辑的代码事例。可能我提供的代码可能还会存在依稀问题,大家可以相互交流学习。

2016-04-15 16:26:21 6720 2

原创 Android之根据图片的Uri获取对应的路径

根据Uri查询图片路径/**根据Uri获取图片的路劲,包含文件名和扩展名*/String path = null;Uri uri = data.getData();String[] proj = {MediaStore.Images.Media.DATA};ContentResolver cr = this.getContentResolver();Cursor cursor = c

2016-04-15 11:41:35 2201

原创 Android开发之Intent Filter

一、概述Intent Filter 在平常的开发中很常见。如果Intent是对在某个数据集上执行的动作的请求,那么Android是如何知道使用哪一个应用程序或者组件来响应这个请求的呢?使用Intent Filter,应用程序组件可以声明它们支持的动作和数据。要把一个Activity或者Service注册为一个可能的Intent处理程序,可以在它的manifest节点中添加一个intent-

2016-04-14 16:01:15 785

原创 Android之PopupWindow类似微信右上角的弹出菜单

日常开发过程中对于PopupWindown的使用也是比较多的。这里给大家展示一下PopupWindow的使用。修改activity_main.xml布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

2016-04-14 12:15:05 8851 1

原创 Android之RadioGroup+ViewPager制作的底部导航栏

在日常开发中我们常常会用到类似微信或者QQ的底部导航。实现这样的效果有多种,今天就为大家介绍一种实现简单,可控性好的底部导航的实现方法。首先创建activity_main.xml布局文件,里面主要由ViewPager和RadioGroup构成。ViewPager用来存放Fragment,RadioGroup布局底部导航。<LinearLayout xmlns:android="http:/

2016-04-14 10:54:33 20193 5

原创 Android之去掉ListView的点击背景

有时候我们在使用listview的时候不希望有点击背景其实去掉点击背景只需一句话,在xml配置文件中加上android:listSelector="@color/transparent"设置成透明色即可。

2016-04-12 12:51:51 3159

原创 Android开发之Mac adb配置

在Mac上配置adb命令在Mac OS中使用adb命令时,应进行变量配置,步骤如下:一、终端中输入 cd ~二、输入touch .bash_profile 回车touch:如果没有,则创建文件,如果有,更新一下文件时间三、输入open -e .bash_profileopen:打开文件回车后会在TextEdit中打

2016-04-12 12:46:30 503

原创 Android开发之Android自带的下拉刷新控件SwipeRefreshLayout

相信各位在Android日常开发中常常会用到下拉刷新的控件,然后Android API中好像没后自带的下拉刷新控件。每次要么是自己写一个自定义的下拉刷新控件,要么采用第三方的控件。其实都很麻烦。Google的Android工程师们也意识到了这一点,所以在Android API 19后就把SwipeRefreshLayout放到了v4包里面。今天就介绍一下这个控件的用法。首先创建一个布局:<

2016-04-12 11:55:33 1132

原创 Android开发之Pending Intent

一、Pending Intent简介PendingIntent类提供了一种创建可由其他应用程序在稍晚的时间触发的Intent的机制。PendingIntent通常用于包装在响应将来的事件时触发的Intent,例如单击Widget或Notification。Tip:在使用时,PendingIntent会执行那些包装好的Intent,同时拥有与你在自己的应用程序中执行他们时候相同的权限和身份。

2016-04-11 16:23:29 1447

原创 Android开发之Intent和BroadcastReceiver

Broadcast Receiver(广播接收者)可以用来监听Broadcast Intent。要使Broadcast Receiver能接收广播,就需要对其进行注册,既可以使用代码,也可以在应用程序的manifest文件中注册。无论怎么注册,都需要使用一个Intent Filter来自定它需要监听哪些Intent和数据。要创建一个新的Broadcast Receiver,需要扩展Broadc

2016-04-11 15:58:36 1059

原创 Android开发之Intent

1.概述:Intent是一种消息传递机制,可以在应用程序内使用,也可以在应用程序间使用。Intent可以用于:1)使用类名显式启动一个Service或者Activity2)启动一个Activity或者Service来执行一个动作的Intent,通常需要特定的数据,或者对特定的数据执行动作。3)广播某个已发生事件2.Intent用途Intent最常见的用途是绑定应用程

2016-04-08 11:55:26 983

ListView,RecycleView,GridView以及SwipeRefreshLayout下拉与上拉刷新

各类常用下拉与上拉刷新

2016-04-25

Android引导页设计

APP引导页设计

2016-04-20

相册图片选取,拍照加图片剪辑

相册图片选取,拍照加图片剪辑

2016-04-15

RadioGroup+ViewPager制作的底部导航栏

RadioGroup+ViewPager制作的底部导航栏

2016-04-14

Android自带的下拉刷新控件

相信各位在Android日常开发中常常会用到下拉刷新的控件,然后Android API中好像没后自带的下拉刷新控件。每次要么是自己写一个自定义的下拉刷新控件,要么采用第三方的控件。其实都很麻烦。Google的Android工程师们也意识到了这一点,所以在Android API 19后就把SwipeRefreshLayout放到了v4包里面。

2016-04-12

apache-tomcat-7.0.2服务器

tomact7.0服务器,这是tomact服务器版本中比较不错的服务器版本,也是日常开发中常用的一款tomact服务器。

2013-09-04

W3CSchool参考文档

这是一个集 HTML XML Browser Scripting Server Scripting dot net Multimedia Web Building 于一体的非常全面的W3CSchool文档,内容相当丰富。值得借鉴和学习。

2013-09-04

空空如也

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

TA关注的人

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