Android
benbenxiongyuan
这个作者很懒,什么都没留下…
展开
-
Android内核开发:图解Android系统的启动过程
学习任何软硬件系统,研究系统启动过程都是一种非常有效地起步手段,搞Android内核开发也不例外。网上有很多文章对Android启动相关代码进行分析和走读,大家可以先搜索阅读一下,我个人更喜欢更加直观的方式去理解未知的东西,包括图、表、系统输出的log信息等等,因此,本文准备通过一些流程图和log信息,来探索一下Android的启动过程。首先,给出一张图,图片来自这里,我觉得它画得很好,...转载 2019-04-13 15:33:00 · 437 阅读 · 0 评论 -
java.util.Properties类,保存时保留注释及格式不变
Properties调用store方法保存时,会把文件中原来的注释给冲掉,而且顺序会发生错乱,网上查找解决方案时,有人遇到了相同的问题,并给出了解决方案。如下:改进Properties,实现了SafeProperties.javaimport java.io.BufferedReader;import java.io.BufferedWriter;import原创 2016-11-02 11:18:13 · 9288 阅读 · 0 评论 -
设置屏幕亮度 和 音乐音量
代码如下:layout.xmlSeekBar android:id="@+id/volumeSeekBar" android:layout_width="353dp" android:layout_gravity="center_vertical" android:layout_height="wrap_content" android:原创 2016-11-01 11:52:25 · 651 阅读 · 0 评论 -
Android呼吸灯效果两种实现
最近项目要做个呼吸灯实现,有两种方式,实现呼吸灯效果本质上都是使用ImageView动画,实现alpha值变化。第一种方式,直接使用动画实现,代码如下: private final int BREATH_INTERVAL_TIME = 1000; //设置呼吸灯时间间隔 private AlphaAnimation animationFadeIn; private原创 2016-10-29 12:21:44 · 10178 阅读 · 1 评论 -
daimajia的图片轮播开源项目配置
daimajia一个关于图片轮播开源项目AndroidImageSlider,先看下效果图。 幻灯片切换动画效果,可直接从网络或本地文件中获取图片。点击图片开始/暂停,滑动等待几秒后重新开始轮播。Step1: Gradlecompile "com.android.support:support-v4:+"compile 'com.squareup.picasso:pi转载 2016-10-29 12:13:29 · 598 阅读 · 0 评论 -
Android广播机制总结
1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程转载 2016-11-08 14:42:06 · 268 阅读 · 0 评论 -
Android实现自定义带文字和图片的Button
在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法。一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小。在Button的属性中有一个是drawableLeft,这个属性可以把图片设置在文字的左边,但是这种方式必须让icon的背景色是透明的,如果icon的背景色不是透明的话,会导致点击转载 2016-10-26 16:25:28 · 4100 阅读 · 0 评论 -
TextView设置个别字体样式
1 SpannableString msp = new SpannableString("测试"+XM+"更换当前号码将从手机发送一条普通短信进行验证");2 msp.setSpan(new ForegroundColorSpan(Color.BLUE), 2, XM.length()+2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 印象转载 2016-10-25 15:21:28 · 955 阅读 · 0 评论 -
Android添加新字体
在Android系统中,自带的只有三种字体---"sans"(默认),"serif"和"monospace",怎么添加字体那。一:打开Word选择字体样式。二:打开C:\Windows\Fonts,所有字体都在里面。三:复制字体文件,例如:隶书字体,复制“隶书 常规”文件,即SIMLI.TTF四:把“SIMLI.TTF”字体文件复制到,工程根目录 assets文件的fonts文件夹原创 2016-10-25 15:09:50 · 874 阅读 · 0 评论 -
Android自定义控件
一、View结构原理Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类。View定义了绘图的基本操作基本操作由三个函数完成:measure()、layout()、draw(),其内部又分别包含了onMeasure()、onLayout()、onDraw()三个子方法。具体操作如下:1、mea转载 2016-10-24 16:28:00 · 246 阅读 · 0 评论 -
Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
本文内容:1、横向ListView的所有实现思路;2、其中一个最通用的思路HorizontalListView,并基于横向ListView开发一个简单的相册;3、实现的横向ListView在点击、浏览时item背景会变色,并解决了listview里setSelected造成item的选择状态混乱的问题。众所周知,ListView默认的方向是垂直的,但有些时候人们更喜转载 2016-12-04 13:47:39 · 431 阅读 · 0 评论 -
实现TextView的垂直滚动,更新文字时自动滚动到最后一行
要点::android:scrollbars="vertical" //设置scrollbars属性为verticalandroid:scrollbarStyle="insideOverlay" //scroll样式android:scrollbarFadeDuration="2000" //scrollbar从出现到消失的时间例子:1)xml中设置:T原创 2016-12-04 14:26:34 · 7809 阅读 · 2 评论 -
android获取图片原始长宽,获取视频第一帧的缩略图
BitmapFactory.Options opts = new BitmapFactory.Options();opts.inSampleSize = 1;opts.inJustDecodeBounds = false;Bitmap bm = BitmapFactory.decodeFile(imageFile.getAbsolutePath(),opts);int width=opts原创 2016-12-22 09:41:27 · 4621 阅读 · 0 评论 -
Android内核开发:系统启动速度优化
Android系统的启动优化主要分为三大部分:(1) Bootloader优化(2) Linux Kernel的剪裁与优化(3) Android OS部分的剪裁与优化本文重点关注Android OS部分的启动优化,值得关注的优化点分别介绍如下:1. 精简preload的classes和resource前面介绍过,由于所有的Android应用程序...转载 2019-04-13 15:08:30 · 1223 阅读 · 0 评论 -
写给 Android 应用工程师的 Binder 原理剖析
一. 前言这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。Binder 之复杂远远不是一篇文章就能说清楚的,本文想站在一个更高的维度来俯瞰 Binder 的设计,最终帮助大家形成一个完整的概念。对于应用层开...转载 2019-04-12 00:48:13 · 194 阅读 · 0 评论 -
android创建文件夹和文件
这几天做一个功能需要在手机上创建一个文件夹,然后往里面存储一些文件,首先得考虑用户有没有sdcard,如果有就在sdcard上创建一个指定的文件夹,如果没有则在你的工程所在的目录“/data/data/你的包名”下创建文件夹。用到的方法是:首先判断sdcard是否插入String status = Environment.getExternalStorageState(); if (...原创 2012-03-04 19:23:41 · 244 阅读 · 0 评论 -
Mac安装android studio后卡在building gradle project info的解决方法
1.找到.gradle目录,一般在/User//下; macOS Sierra 10.12.3可以直接快捷键 shift+command+. 显示隐藏的文件即可看到.gradle文件夹。2.进入.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9文件夹下,删除.part文件3.去gradle网站:htt转载 2018-01-10 17:02:42 · 333 阅读 · 0 评论 -
Android签名详解
本文主要讲解Android应用程序签名相关的理论知识,包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。1、什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,转载 2017-12-21 17:00:58 · 320 阅读 · 0 评论 -
Genymotion virtualbox 提示错误 (VERR_PDM_DRIVER_NOT_FOUND).
查看详细错误: The configured driver wasn’t found. either the necessary driver modules wasn’t loaded, the name was misspelled, or it was a misconfiguration. (VERR_PDM_DRIVER_NOT_FOUND). 这个是virtulbox里网络设置转载 2017-05-17 14:32:51 · 1514 阅读 · 0 评论 -
adb通过wifi或usb方式完成调试
1.简介在默认情况下adb是通过USB连接的,但是adb也支持通过wifi连接,前提是使用adb命令的电脑终端与待调试的手机在同一网段下。这样,在没有usb或者远程下都可以完成调试手机。但是手机的调试模式改为wifi后,手机连接usb就会无效,包括充电。可以将手机在wifi下切回USB即可。2.连接USB线转为WIFI(前提adb通过usb连接)cmd:转载 2017-02-09 16:28:50 · 6073 阅读 · 1 评论 -
dp与像素px换算
dp是虚拟像素,在不同的像素密度的设备上会自动适配,比如:在320x480分辨率,像素密度为160,1dp=1px在480x800分辨率,像素密度为240,1dp=1.5px计算公式:1dp*像素密度/160 = 实际像素数px(像素):屏幕上的点。dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。原创 2016-10-25 11:56:21 · 25402 阅读 · 0 评论 -
Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
1、首先说一下canvas类:Class OverviewThe Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into转载 2016-10-24 16:01:45 · 1832 阅读 · 0 评论 -
Android 用Animation-list实现逐帧动画
第一步:先上图片素材,以下素材放到res/drawable目录下:http://blog.csdn.net/aminfo/article/details/7847761图片素材:文件名称:icon1.pngi转载 2016-10-24 15:15:37 · 310 阅读 · 0 评论 -
如何使用JavaScript调用android原生代码,android原生代码调用JavaScript
使用javascript调用android代码1.使用webview对象的addJavascriptInterface方法2.addJavascriptInterface方法有两个参数,第一个参数就是我们一般会实现一个自己的类,类里面提供我们要提供给javascript访问的方法;第二个参数是访问我们在obj中声明的方法时候所用到的js对象,调用模式为window.interfac转载 2016-07-06 15:31:19 · 1985 阅读 · 0 评论 -
ionic框架对Android返回键的处理
在HybridApp移动跨平台开发中,android平台会遇到一些比较特殊并难以解决的问题,这些问题在原生应用开发中很easy, Android的返回键处理就是问题之一,假如我们要实现一个在很多App中都有的在主页按返回键弹出对话框提示用户退出应用的功能,在原生应用开发中是很容易的,只要在onKeyUp事件里面对返回键事件进行处理就可以了。按2次返回键退出应用的Java代码如下:pri转载 2016-07-06 15:15:11 · 613 阅读 · 0 评论 -
屏幕旋转时防Activity重新加载
在AndroidManifest.xml中,增加一项设置即可,如下:android:name=".xxxxxxActivity" android:configChanges="orientation|screenSize">原创 2016-07-06 15:05:47 · 909 阅读 · 0 评论 -
Android 综合揭秘 —— 全面剖释 Service 服务
引言Service 服务是 Android 系统最常用的四大部件之一,Android 支持 Service 服务的原因主要目的有两个,一是简化后台任务的实现,二是实现在同一台设备当中跨进程的远程信息通信。Service 服务主要分为 Local Service 本地服务与 Remote Service 远程服务两种,本地服务只支持同一进程内的应用程序进行访问,远程服务可通过AIDL(A转载 2016-07-05 16:43:12 · 1044 阅读 · 0 评论 -
Android Application详解与用法
1:Application是什么?Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application转载 2016-06-14 10:19:13 · 3875 阅读 · 0 评论 -
AndroidStudio快捷键(MAC)
CTRL + R Build and runOPTION + CMD + O 查找工程内的文件或方法或字段CMD + O 查找工程内的类文件CMD + P Show parameters for selected methodOPTION + CMD + L Reformat codeCMD + N Generate methodCMD + R 相当于原创 2016-06-13 16:53:24 · 359 阅读 · 0 评论 -
adb shell 命令详解
adb介绍SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序。借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作: 1、快速更新设备或手机模拟器中的代码,如应用或Android 系统升级;转载 2016-06-13 15:01:12 · 586 阅读 · 0 评论 -
Mac上配置adb命令环境
1. 在命令行下,运行命令:cd $home , 进入当前用户home目录2. 运行命令:touch .bash_profile ,创建.bash_profile文件3.运行命令:open -e .bash_profile ,打开.bash_profile文件,对其内容进行编辑4.运行open命令后,会打开文本编辑器。输入以下内容:export PA原创 2016-06-13 14:23:48 · 890 阅读 · 0 评论 -
android创建文件夹和文件
这几天做一个功能需要在手机上创建一个文件夹,然后往里面存储一些文件,首先得考虑用户有没有sdcard,如果有就在sdcard上创建一个指定的文件夹,如果没有则在你的工程所在的目录“/data/data/你的包名”下创建文件夹。用到的方法是: 首先判断sdcard是否插入 String status = Environment.getExternalStorageState(); i转载 2012-08-29 20:15:45 · 866 阅读 · 0 评论 -
Cordova通过CordovaPlugin插件调用 Activity
引言Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用手机内部的API跟页面进行信息交换。Cordova 特别为此定制了完善的解决方案,以方便用户进行程序编辑。在这一章里将为大家逐一介绍Cordova与Actitity通讯的实现原理。转载 2016-07-05 15:06:50 · 16384 阅读 · 2 评论 -
如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
原文:How to distribute your own Android library through jCenter and Maven Central from Android Studio 如果你想在Android Studio中引入一个library到你的项目,你只需添加如下的一行代码到模块的build.gradle文件中。12转载 2016-07-19 16:01:46 · 807 阅读 · 0 评论 -
Android Studio更改工程名异常解决方案 :can't rename root module
在修改Android Studio 中 project的名字时 ,提示 “can’t rename root module”。这是因为Android Studio只能修改根目录内的所有文件,要修改project根目录名字,只能关闭Android Studio 在操作系统中修改文件夹名字。具体步骤:1.关闭Android Studio。2.直接在操作系统中修改好名字。原创 2016-08-05 09:34:27 · 8625 阅读 · 0 评论 -
Android系统关机或重启的几种实现方式
默认的SDK并没有提供应用开发者直接的Android系统关机或重启的API接口,一般来讲,实现Android系统的关机或重启,需要较高的权限(系统权限甚至Root权限)。所以,在一般的APP中,如果想要实现关机或重启功能,要么是在App中声明系统权限,要么是通过某种“间接”的方式,比如广播或反射,来间接实现系统关机或重启。再者,就是放在源码环境中进行编译,这样做有一个好处,就是可以直接调用Andr转载 2016-11-04 10:40:43 · 2097 阅读 · 0 评论 -
Android利用root权限开关机、休眠和唤醒
在Android的设备中如果我们想重启手机或者关机或,一般是需要在源码的环境下编译apk,并赋予其相应地系统权限,而如果想唤醒设备则需要wakelack。源码编译APP还是比较麻烦的,不过由于android的内核属于Linux,那么在获取root权限的android设备商自然可以使用linux的开关机,唤醒休眠命令。 (1)重启设备[java] view转载 2016-11-04 10:30:44 · 3095 阅读 · 3 评论 -
用户手势检测-GestureDetector使用详解
一、概述当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根转载 2016-11-04 10:25:43 · 281 阅读 · 0 评论 -
ViewGroup为什么不会调用onDraw
正常情况下,我们重写LinearLayout的onDraw方法,它是不会被调用的,这篇文章就来分析一下原因和解决方法。 一,现象Android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_absolute" android:orientation="vertical转载 2016-10-24 11:30:48 · 259 阅读 · 0 评论 -
ByteBuffer的心得
在NIO中,数据的读写操作始终是与缓冲区相关联的(读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区)缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型(String并未包含其中,但是String. getBytes就可以了). Nio缓冲区的7种形式ByteBuffer ShortBuffer转载 2016-09-23 15:23:58 · 1577 阅读 · 0 评论