Android
文章平均质量分 82
M_O_
书山有路勤为径,学海无崖苦作舟
展开
-
Android dialog透明
Android ui绘制的基础是window,在window里面是decorview,decoreview里面是我们设置的布局。1. 设置Dialog整体透明WindowManager.LayoutParams lp=window.getAttributes();lp.alpha=0.2f; // 透明度,0.0f~1.0f, 1.0f为完全不透明,0.0f时整个dialog不可见window原创 2017-08-17 13:08:28 · 794 阅读 · 0 评论 -
一个AIDL的例子
昨天学习aidl的时候写了个例子,中间遇到一些问题,比如客户端怎么也绑定不了服务端,后面发现是服务端的服务没有起来。这里分享一下,遇到问题的可以参考一下。这个例子有两个应用,一个叫ServiceA作为服务端,一个叫ClientB作为客户端。服务端1.设计服务端要提供的接口:List<Book> getBookList(); //返回当前书藉列表void addBook(Book book); //原创 2016-09-20 22:35:33 · 679 阅读 · 0 评论 -
API GUIDE ---- AIDL
Android Interface Definition Language (AIDL)原文:https://developer.android.com/guide/components/aidl.html简介AIDL (安卓接口定义语言) 和其他接口定义语言非常相似.。在处理进程间通信(IPC)的时候,它可以帮你同时定义好客户端和服务端的编程接口。在安卓中,一个进程并不能访问另外翻译 2016-09-20 18:44:51 · 389 阅读 · 0 评论 -
Android 侧边栏
简介侧边栏,又叫侧滑菜单,又叫抽屉菜单,一般用于导航功能,侧边滑入或者从标题栏导航图标进入。跟据google设计建议,左侧边栏一般用于app导航,右侧边栏用于操作当前页面内容。 侧边栏由两个部分组成: 布局(DrawerLayout)和侧边栏视图(DrawerView)布局Android提供的布局是: android.support.v4.widget.DrawerLayout布局文件如下:<?x原创 2016-08-31 17:49:18 · 4240 阅读 · 0 评论 -
AsyncTask
AsyncTask是Android提供了一个异步执行的库,它的主要功能是,在UI线程中创建和调用,在后台执行耗时任务,执行任务时或者执行完成后可以更新界面。基本使用//AsyncTask<传入参数类型,进度类型,结果类型>,构造函数必须在UI线程中调用new AsyncTask<Void,Integer,String>(){ @Override protected void onP原创 2016-09-09 01:20:27 · 669 阅读 · 0 评论 -
Android 进程保活总结
目标我们观察到,当APP在后台运行或者使用清理工具清理后,无法再收到服务器的推送通知,有些非常重要的消息无法及时收到,为了收到这些消息并提示用户,我们需要保持APP后台推送接收一直在工作状态。网上流传的保活方案从APP结束的原因来看,APP的主要终结者是LMK和各类第三方清理工具,要保持app的活跃,一方面可以防止被杀入手,另一方面可以从被杀后再次启动入手,下面详细说明。防止被LM原创 2016-08-04 15:47:49 · 1635 阅读 · 0 评论 -
APP 签名
APP需要签名后才能在Android设备上安装,开发时默认是使用debug签名,发布产品时不能用这个签名,必须使用自己的签名文件。签名文件是一个叫keystore的东西 ,它有一个store密码,keystore包含一个key,和一个key密码生成keystorekeytool -genkeypair -keystore “app.keystore” -storepass “123456” -ali原创 2016-03-01 17:58:04 · 3508 阅读 · 0 评论 -
Android线程小结
1.RunnableRunnable是一个接口,被Thread继承:public interface Runnable { public void run();} 2.Thread线程,继承了Runnable,并重写了run()函数.在调用start()时,会调用底层的VMThread.create真正创建线程,然后执行run()函原创 2015-02-05 10:58:47 · 559 阅读 · 0 评论 -
获取WiFi MAC地址总结
今天对MAC地址的获取做了一些学习,目前网上获取MAC地址的方法主要如下: - 使用busybox ifconfig - 使用cat /sys/class/net/wlan0/address - 使用WifiInfo.getMacAddress - 使用NetworkInterface.getHardwareAddress在飞行模式下,基本所有方法都不可用。BusyBox ifconfig并原创 2016-01-05 17:55:17 · 31925 阅读 · 4 评论 -
SharedPrefences putStringSet 问题
问题背景从API 11开始,android提供了保存和获取String Set的方法:Editor putStringSet(String key, @Nullable Set<String> values);Set<String> getStringSet(String key, @Nullable Set<String> defValues);可以很方便地保存数组。问题问题代码private原创 2016-04-19 10:23:25 · 5649 阅读 · 3 评论 -
build.gradle App重命名
gradle App重命名默认情况下,android studio在生成apk或者library的时候,不会有任何版本或其他信息,但通常我们都需要重命名以辨别不同的APK,特别是在有多个渠道的时候。方法是重命名android过滤器中变量output.outputFile的名字。下面是网上流传的代码:1. 重命名apkandroid.applicationVariants.all { variant原创 2016-04-18 15:26:34 · 3009 阅读 · 0 评论 -
Android App 屏幕适配
android支持的设备很多,屏幕大小各不一样,要用同一个APP在不同的设备上运行,就要让UI在这些设备上合理地显示,一般需要缩放字体大小和UI的宽高等,也可以在不同大小的屏幕上显示不同的布局。在做屏幕适配之前,需要了解一些专业词语。专业词语Pixel (像素)In digital imaging, a pixel, pel,[1] dots, or picture element[2] is a原创 2016-10-24 12:14:56 · 409 阅读 · 0 评论 -
自定义下拉刷新布局
下拉刷新布局在很多地方用到,官方提供了SwipeRefreshLayout,也有很多第三方库可以使用,但是有时候我们需要做一些自定义刷新效果,下面来实现一个简单的下拉刷新布局,来初步了解下拉刷新布局原理和学习自定义ViewGroup。原创 2016-10-05 13:36:48 · 2221 阅读 · 0 评论 -
关于RecyclerView的宽高调整
设置ItemView的间隔高宽重写ItemDecoration的getItemOffsets函数即可:recycleview.addItemDecoration(new RecyclerView.ItemDecoration() { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView p原创 2017-01-10 16:26:26 · 29971 阅读 · 4 评论 -
Android 同步框架的使用
本文从使用角度上介绍了如何创建和使用android 账户同步框架,大部分是官方文档资料,但是有些小坑需要注意。 总体上,使用账户同步需要实现两部份代码,一是创建账号,二是创建同步适配器。创建账号之前,需要创建一个账号类型让系统知道,系统通过查找所有app的service来更新自己的账号类型,创建账号时,就会查找和使用此类型。同样,在调用同步代码时,系统通过查找所有app的service来确定同步器原创 2016-08-03 14:50:12 · 4768 阅读 · 6 评论 -
DataBinding系列五、XXXBinding
XXXBinding类这个类是数据绑定类,是和布局文件对应的,假设布局文件为activity_xxx,编译的时候会自动生成一个类: 应用包名.databinding.ActivityXxxBinding.java 这个类继承了android.databinding.ViewDataBinding,它是实现数据和界面通信的桥梁。 类中成员变量:views : 为布局文件每个定义了id的view生原创 2017-01-10 15:49:18 · 1548 阅读 · 0 评论 -
DataBinding系列三、表达式
使用数据绑定的布局文件中,对属性赋值的是表达式,这样可以在绑定时执行特定代码,减少工作量。表达式是有特殊语法的。Imports导入功能,和java中的import功能一样,导入之后就能使用类的静态属性和方法了,也可以用来定义对像。其中 java.lang.* 是默认被导入了。语法是:data> importtype="xxx.xxx.xx"原创 2016-12-15 16:03:35 · 1236 阅读 · 0 评论 -
DataBinding系列四、数据更新
对于data binding 目前已经知道 1. 将对像属性绑定到view(数据->view) 2. 将事件响应方法绑定到view(view->数据) 3. 使用绑定时运行的表达式进行小量的逻辑编写但是,如何将对像数据的变化更新到view呢?原创 2016-12-15 23:49:03 · 4138 阅读 · 2 评论 -
DataBinding系列一、绑定数据到view
Android dataBinding 绑定数据到view上显示原创 2016-12-13 23:32:23 · 1537 阅读 · 0 评论 -
DataBinding系列二、绑定事件处理方法
绑定事件处理方法到view,当view的事件发生时,调用这些方法处理事件。 有两种绑定方法:Method References(方法引用)和Listener Bindings(监听绑定)。原创 2016-12-13 17:52:03 · 9599 阅读 · 2 评论 -
productFlavors 用法
简单介绍一下gradle中productFlavors的用法原创 2016-12-05 23:52:32 · 23429 阅读 · 7 评论 -
安卓模拟器设置网速和延迟
有时候做APP,需要测试在低网速或高延迟的网络环境下工作,android官方模拟器对此提供了很好的支持(真是越来越好用了),设置方法有两种,界面和命令行。界面设置命令行设置 the Android emulator supports network throttling, i.e. slower network bandwidth as well as higher connectio原创 2016-11-19 13:36:17 · 23726 阅读 · 0 评论 -
App 混淆
Android Guide:http://developer.android.com/tools/help/proguard.htmlAPP混淆是通过在语义上去除无用的类、变量和方法,修改它们的名字来提高APP的反编译难度。APP混淆器已集成在Android SDK中,使用时只需要使用下列代码打开它:android { ... bu原创 2016-01-27 12:25:28 · 1157 阅读 · 0 评论 -
关于startActivityForResult
很偶然的一次,发现在有些手机上startActivityForResult函数,在启动activity之后立即调用了,而在另一些手机上表现正常,十分不解,在网上查找后知道了原因,更详细的解释在api说明中:public void startActivityForResult (Intent intent, int requestCode, Bundle options);Launch an acti翻译 2015-12-23 18:04:06 · 524 阅读 · 0 评论 -
Wifi连接热点
Wifi连接这一块,网上的资料通常是讲调用WifiManager的两个公开函数: /** * Reconnect to the currently active access point, if we are currently * disconnected. This may result in the asynchronous delivery of state原创 2015-12-22 18:54:59 · 2334 阅读 · 0 评论 -
android下播放器视频输出方法总结
在Android下输出视频画面,有很多种方法,每个都有自己的特点,比如将视频数据送回到java层然后用lockCanvas画出来这种方法的特点就是慢. 上面算是第0种方法,这个完全不值得提倡. 使用OMXCodec解码器解出来的视频,可以让它自己输出,只要在打开解码器的时候给它传个ANativeWindow:sp OMXCodec::Create( cons原创 2014-12-05 18:03:31 · 8965 阅读 · 0 评论 -
Intent 匹配规则
本文翻译自Android API Guide,并经过整理. Intent 匹配规则:做三项测试:action,data,category 1.action测试: 一个过滤器中可以定义零个或多个action,如果Intent不包含action,那么它通过此项测试.如果Intent包含的action,那么需要和过滤器中的action匹配(相同)才能通过测试.如果过滤器不定义ac翻译 2014-12-17 10:09:50 · 1710 阅读 · 0 评论 -
jni小结
Jni(java native interface)是一种技术,它让java调用其他语言的代码,比如C/C++的代码.在SUN的官方网站上可以下载到相关的文档,看文档总是比较好的,给出链接先:JVM TOOL DOC:http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.htmlJNI DOC:http:原创 2014-11-26 15:23:56 · 1406 阅读 · 0 评论 -
android中的智能指针
智能指针主要用来解决多个指针指向同一对象时,一个指针被销毁时删除了对象导致的指针悬挂问题. 智能指针的实现原理:使用引用计数来管理指向对像的拷贝,智能指针将一个计数器和指向的对像关联起来,在创建智能指针时将计数器初始化为1(使用指向的对像来创建),使用其他智能指针进行创建时将调用拷贝构造函数,拷贝构造函数将计数器加1,对其他智能指针赋值时减少左值的计数值增加右值的计数值,释放指针将调用析构函数,原创 2014-10-10 11:49:09 · 743 阅读 · 0 评论 -
Android.mk小结
Android.mk结构多目录Android.mk包含语句设置头文件搜索路径设置需要链接的动态库导出模块头文件路径导出模块依赖关系预编译实例Android.mk规则在NDK中有文档ANDROID-MK说明,我觉得了解了基本规则的人都要去看一下,以便灵活运用.1.Android.mk结构:LOCAL_PATH:=$(call my-dir) #设置当前原创 2014-10-23 18:03:28 · 30274 阅读 · 2 评论 -
Android 使用 sendevent 模拟鼠标和键盘事件
这篇文章是从网络整理的。模拟原理是对驱动发送消息,就是linux里面的input子系统。命令格式: sendevent /dev/input/eventX [type] [key] [value]其中/dev/input/eventX 对应的是设备,可以用getevent查看可用设备。type,key,value这些定义在linux源代码里面的input.h文件里面。 例:转载 2012-11-22 14:48:29 · 6725 阅读 · 0 评论 -
Android.mk介绍
转自:网络写得很好,推荐。 Android.mk文件语法规范及使用模板一. Android.mk文件语法规范Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法。在阅读下面的内容之前,假定你已经阅读了docs/OVERVIEW.TXT文件,了解了它们的脚色和用途。一个Android.mk file用来向编译系转载 2012-11-22 14:30:24 · 548 阅读 · 0 评论 -
Android网络开发基础知识
本文转自:不好意思,不记得是哪里了。1. 概要 本文主要介绍在Android平台上开发网络应用的一些常用接口。 2. Android平台上可以使用的几种网络接口Android平台的网络应用绝大部分都是基于Java的编程接口的,也就是说我们开发类似的运用的时候可以有多种选择,比J2me确实好多了。2.1. 标准Java接口java.net.*下面提供了访问 HTTP 服务的基转载 2012-11-22 10:50:41 · 2190 阅读 · 0 评论 -
android 动态创建控件并设置布局
有时候我们需要在代码中动态创建view,并把它加入到当前的viewGroup中,动态创建view一般使用LayoutInflater或者构造函数,在这里使用构造函数,有三个构造函数可用,比如动态创建TextView,可以使用这三个构造函数: TextView(Context context) TextView(Context context, AttributeSet attr原创 2014-12-10 16:09:17 · 28074 阅读 · 1 评论 -
数据存储之SharePreference
SharePreference这个类可以用来保存一些应用程序要的配置或简单的数据,对于大量数据可能力有不逮,类似于WIN下面的ini文件。数据会被保存在/data/data/PACKAGE_NAME /shared_prefs 。对象的创建: getSharedPreferences(String filename, int mode);公共函数:abstract bool翻译 2012-12-31 10:30:34 · 14378 阅读 · 0 评论 -
Action Bar (1)
action bar是一个标示用户位置的窗口功能,可以提供用户操作和导航模式。使用action bar可以为用户提供熟悉的界面(如果其他应用也使用action bar),系统可以为action bar优雅适配不同的屏幕配置。 图1. 一个action bar 包含:[1]应用图标,[2]两个操作项,[3]更多操作action bar提供了一些关键功能:l 提供一个标志指明用户在你的翻译 2015-03-18 09:44:24 · 504 阅读 · 0 评论 -
无线WiFi漫游的基本原理及搭建
原谅地址:http://lcbk.net/wifi/812.html随着网络的普及,我们从宽带到光纤、从有线到无线、从单信道到多信道、从单频到双频,都深深刻着网络时代的烙印;不管你相不相信,网络时代真的来到了。WiFi网络中关于“漫游”的议论纷争始终没有停止过,期间不免夹杂着一些误解,当然在协议范围内各方见仁见智,依然是主流声音。本篇将从多个视角谈论一下WiFi网络的漫转载 2016-01-07 00:05:07 · 40442 阅读 · 2 评论 -
无线漫游原理
转自:http://www.ruijie.com.cn/fw/wd/5600无线漫游原理无线(WLAN)技术漫游实现描述一、FAT AP架构下,AP设备不做认证时:(1) AP1,AP2正常工作,发送Beacon帧,向STA通告支持的无线服务;(2) STA搜索到AP1的信号,向AP1发Probe Request,请求获取AP1所提供的无转载 2016-01-06 22:37:21 · 9697 阅读 · 0 评论 -
Everything every Android Developer must know about new Android's Runtime Permission
原文地址:http://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en?utm_source=tuicool&utm_medium=referralAndroid M’s name was just announced officially days转载 2016-01-05 09:49:28 · 1278 阅读 · 0 评论 -
蒙板引导页面
一、引导页面的弹出 使用FrameLayout: 查找到contentview的父亲,是一个FrameLayout类型的布局文件,id为android:id/content。在这个FrameLayout的最上层插入引导view,即可实现引导功能。 示例代码: FrameLayout frameLayout=(FrameLayout)getActivity().findViewById原创 2015-12-10 15:54:46 · 1361 阅读 · 0 评论