Android 应用开发
belyxiong
这个作者很懒,什么都没留下…
展开
-
Android ADB工具
备份一下。原创 2023-01-12 00:58:11 · 148 阅读 · 0 评论 -
Android vector width和viewportWidth的关系
Android Vector drawable的width/height和viewportWidth/viewportHeight之间是一种映射关系,所有的绘制命令是基于viewportWidth和viewportHeight的,在viewportWidth/viewportHeight范围内画的画会根据它们之间的大小比例投射到width/height上,如下图:如果width/height 比viewportWidth/viewportHeight大,实际画的图的尺寸就会放大,反之缩小,vec原创 2022-05-13 10:12:46 · 3603 阅读 · 0 评论 -
Java 构造函数及类成员变量初始化顺序
父类静态成员变量 ->本类静态变量 -> 父类非静态变量 -> 父类构造函数 -> 本类非静态变量 -> 本类构造函数Demo:public class Main { public static void main(String[] args) { TestClass tc = new TestClass(); } private static class Base { public Base(Strin..原创 2021-10-28 00:27:31 · 290 阅读 · 0 评论 -
你一定没见过的bug,app 不响应但是没有ANR
最近遇到一个bug,app在使用中偶尔会出现界面不刷新,按钮也不响应,但是并没有ANR,process也不会被系统杀死,其他应用程序运行正常,该状态一直会被保持直到手动杀死app或者重启系统。搜遍全网也没发现相关信息,后来经过反复在framework里加log,反复测试,终于找到了原因。原因是在某个极端情况下,系统在app的UI 线程消息队列中遗留了一个Barrier Message(屏障消息)没有清除,导致后面所有同步消息和runnable都没有办法得到执行。原理:BarrierMes原创 2021-10-11 22:47:37 · 963 阅读 · 1 评论 -
Android/Java里为啥有些exception可以抛出,有些不能?
写程序时为了在某种条件下抛出异常让程序强行终止,可以通过抛出异常来实现,但是会发现抛出某些异常是需要在方法的声明中声明的,不然编译不过,具体原因是所有RuntimeException及其子类的exception都可以直接抛出,其他的Exception则需要在方法中声明,并且其调用者需要捕获该异常或继续声明该异常。...原创 2021-10-07 10:36:08 · 322 阅读 · 0 评论 -
Window上Android截屏脚本
输入文件名,截取当前屏幕并显示出来@echo offadb rootset input=set /p input=Input file name:echo Saving screenshot to /data/data/%input%.pngadb shell screencap -p /data/data/%input%.pngecho Screenshot savedecho Pulling out...adb pull /data/data/%input%.png ./img.原创 2020-08-26 21:45:05 · 179 阅读 · 0 评论 -
使EditText的宽度自动适应屏幕控件
在开发过程中涉及到EditText和其他控件在一排的时候,而且需要动态改变EditText的宽度以便让一排控件能自动适应不同的屏幕宽度,可以使用以下办法: android:layout_width="fill_parent" android:layout_height="wrap_con原创 2011-11-22 18:00:03 · 9787 阅读 · 1 评论 -
混淆打包的Proguard returned with error code 1. See console错误
如果你使用Android的混淆打包时遇到以下类似错误:Proguard returned with error code 1. See console[2011-12-01 14:03:09 - ] proguard.ParseException: Expecting class path separator ';' before 'Analytics' in line 1 of原创 2011-12-01 14:27:05 · 9761 阅读 · 1 评论 -
ListView滚动背景反色问题
在使用ListView的时候如果设置了窗口背景色,点击ListView进行滚动时会看到ListView的焦点区域出现反色现象,下图正常显示的情况,背景设置为一张图片:当点中ListView进行滚动时ListView对焦点区域进行重画出现反色现象,如下图:按该文所述在ListView的属性中添加下面这个即可 android:cacheColorHint原创 2011-12-01 11:21:17 · 2230 阅读 · 0 评论 -
Back to Android
重回Android开发阵营!原创 2014-04-29 15:37:38 · 713 阅读 · 0 评论 -
Android 调试native的crash和anr
1. 在trace中找到对应的库,例如 liba.so和对应的地址信息2. 使用addr2line 查看 addr2line 地址 -e liba.so -f 或者 arm-eabi-addr2line3. 如果addr2line打不出具体的函数就用objdumpobjdump -s -d liba.so > xxx.txt或者arm-eabi-ob原创 2014-06-18 13:53:05 · 3605 阅读 · 0 评论 -
Android 5.0(L) 的MediaSession架构分析
Android5.0 提出了全新的MediaSession概念用于播放器与控制器之间进行交互,它取代之前的RemoteControlClient,并提供了更为灵活的客户端受控端模型,下面是它的架构图: 其架构主要分为3大部分:1. 受控端(播放器):播放器需要创建MediaSession,创建的时候就类似于在系统注册了它,并告诉系统它可以被其他控制端所控制。2.原创 2014-12-20 04:43:32 · 10914 阅读 · 6 评论 -
Android中增加seekbar可触摸的区域
//mCurrentView 是Seekbar的父亲private void enlargeSeekBar(){ mCurrentView.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View v, Mo原创 2016-01-15 00:51:01 · 5462 阅读 · 2 评论 -
git 拷贝一个branch里面的多个commits到另外一个branch的方法
原文参见: http://weblog.avp-ptr.de/20120928/git-how-to-copy-a-range-of-commits-from-one-branch-to-another/转载 2017-05-23 00:19:05 · 1206 阅读 · 0 评论 -
解决Android启动过程中Log丢失问题的方案
在Android开发中,遇到需要Debug启动过程中的问题时,往往会因为在启动过程中log丢失而异常麻烦,为此我们用了下面这个简单的方案。假设你的应用或者framework的某些服务需要在开机时越快启动越好,那么在启动过程中某些log会丢失,但是程序的逻辑不会丢失,为此我们可以把需要分析的关键部位的log缓存在内存中,等到问题出现后系统稳定后再通过某些方式把缓存的log信息读出来,因为log是存在...原创 2018-03-02 00:45:09 · 1103 阅读 · 0 评论 -
修改PrefernceActivity的字体颜色
在res/values下创建一个文件themes.xml,内容如下:xml version="1.0" encoding="UTF-8"?> xmlns:android="http://schemas.android.com/apk/res/android"> name="DarkText"> item name="android:textColor">#00000原创 2011-11-17 14:57:52 · 992 阅读 · 0 评论 -
修改Android模拟器的存储空间
使用模拟器时发现不能向/system目录放东西,报错:out of memory,使用df命令查看发现system目录空闲空间为0,所以不能再向里面增加任何东西。经google发现在启动模拟器时使用这个命令增加其存储空间即可:emulator -partiti原创 2011-10-09 17:40:45 · 4242 阅读 · 0 评论 -
【转】软件开发团队主管易犯的十个错误
http://www.36kr.com/ten-mistakes-software-team-to-look-out/http://agile.dzone.com/news/10-mistakes-software-team本文是Roy Osherove在Skills原创 2011-08-09 10:04:35 · 1005 阅读 · 1 评论 -
切换屏幕时恢复应用的状态
在应用的使用过程中遇到发生屏幕切换时,需要能恢复切换前的状态,给用户良好的体验效果,这就要求应用程序在切换屏幕的时候能保存当前的状态,这个需求通过重载activity的onSaveInstanceState方法和 onRestoreInstanceState方法即可实现。 重载onSaveInstanceState,这个方法在切换前被调用@Overridepublic void onS原创 2009-02-25 14:33:00 · 1164 阅读 · 0 评论 -
通过Intent获取其他窗口的处理结果
在实际的应用程序开发中经常需要获得另外一个窗口的操作结果,比如选择的图片的地址,这时可以使用startActivityForResult来完成,方法如下: 以取得从相册中选择的图片Uri为例: 在应用窗口中: Intent intent = new Intent(Intent.ACTION_PICK, null);//创建新的Intent // intent原创 2009-02-23 15:50:00 · 1129 阅读 · 0 评论 -
实现屏幕切换
如果应用有特殊需求,需要手动将屏幕切换为横屏或竖屏,可以使用以下代码实现: int newOrientation = android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(th原创 2009-02-26 15:00:00 · 1127 阅读 · 0 评论 -
保存图像到相册
android中保存图像的方法(使用content provider): ContentValues values = new ContentValues(8); String newname = DateFormat.format("yyyy-MM-dd kk.mm.ss", System.currentTimeMillis()).toStr原创 2009-03-02 15:19:00 · 4945 阅读 · 0 评论 -
从相册选一张图片的方法
应用开发中如果需要从相册中取一张图片,可以使用以下方法: Intent intent = new Intent(Intent.ACTION_PICK, null);//生成新的Intent intent.setDataAndType(//设置数据位置和类型 MediaStore.Images.Media.EXTERNAL_CONTENT_URI,原创 2009-03-06 17:03:00 · 1733 阅读 · 0 评论 -
从网络上读取图片
通过图片的url下载图片并解析为Bitmap: URL url =new URL(imgurl); URLConnection urlconn = url.openConnection(); urlconn.connect(); HttpURLConnection httpconn =(HttpURLConnection)urlcon原创 2009-03-09 15:28:00 · 686 阅读 · 0 评论 -
保持窗口的绘制方向不变
android:configChanges="orientation|keyboardHidden|navigation" android:label="@string/app_name"android:screenOrientation="portrait"> portrait :竖 landscape: 横se转载 2009-03-13 14:57:00 · 717 阅读 · 0 评论 -
Android 架构简介
一:前言 Android 是一种基于 Linux V2.6 内核的综合操作环境。最初,Android 的部署目标是移动电话领域,包括智能电话和更廉价的翻盖手机。但是, Android 全面的计算服务和丰富的功能支持完全有能力扩展到移动电话市场以外。Android 也可以用于其他的平台和应用程序。 黑莓和 iPhone 都提供了受欢迎的、高容量的移动平台,但是却分别针对转载 2010-03-21 22:00:00 · 659 阅读 · 0 评论 -
通过Intent打电话
String CallNumber = "tel://" + string; Intent call = new Intent(Intent.ACTION_CALL); call.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); call.setData(Uri.parse(Cal原创 2010-03-23 22:00:00 · 976 阅读 · 0 评论 -
Android自动测试之通过命令行启动应用程序
在进行自动测试中,通过命令行启动应用程序是必不可少的,通常的windows程序倒是很简单,一个脚本启动应用程序即可,但要在终端上运行就不那么容易了,像windows mobile中,我至今都不知道如何把应用程序自动安装上去并运行之,但android很好,提供了这样的可能:安装就不用说了,adb install xxxx更新安装,先卸载,adb uninstall xxx.xxx.xxx原创 2010-04-07 16:15:00 · 1900 阅读 · 0 评论 -
快速执行 cd .. 命令【转】
在linux中执行cd ..命令总是很烦,特别是遇到像android这样层次复杂的系统,这里转了一段脚本,简单的输入 .. 即可完成 cd ..的功能,代码如下,需要加入到.bashrc中 ..() { num=$1 test $1 || num=1 seq=`seq $num` next=`printf ‘../%.0s‘ {$seq}` c转载 2010-05-21 15:38:00 · 742 阅读 · 0 评论 -
快速执行 cd .. 命令【转】
在linux中执行cd ..命令总是很烦,特别是遇到像android这样层次复杂的系统,这里转了一段脚本,简单的输入 .. 即可完成 cd ..的功能,代码如下,需要加入到.bashrc中 ..() { num=$1 test $1 || num=1 seq=`seq $num` next=`printf ‘../%.0s‘ {$seq}` c转载 2010-05-21 15:38:00 · 975 阅读 · 0 评论 -
如果,编译Android时新添加的应用程序没有被编译进image
如果, 编译Android时新添加的应用程序没有被编译进image,需要修改这个文件: /bulid/target/product/generic.mk 在这里添加新增加的应用 PRODUCT_PACKAGES := / AccountAndSyncSettings /CarHome / DeskClock /原创 2011-06-28 15:13:00 · 892 阅读 · 0 评论 -
某些不能被应用使用的权限
Android中有些权限不能被用户应用程序使用,如 “android.permission.CALL_PRIVILEGED"”, 要使用这种权限只能把对应的应用程序和rom编译在一起。原创 2011-06-28 16:20:00 · 816 阅读 · 0 评论 -
Android的Intent
Intent : 意图; 意向; 目的 Intent是android里最重要的概念之一,简单的说相当于windows中的消息和linux中的信号量,用于实现应用之间的信息交换。通常,我们要发送一个信息到另外一个应用时会通过以下方式进行: 发送方: 1. 生成新的Intent Intent intent = new Intent(); 2. 填写I原创 2009-02-17 17:21:00 · 694 阅读 · 0 评论