Android
文章平均质量分 78
玄隹
Cheer Up and Keep Faith!!!
展开
-
安卓启动三方APP
1. 对于知道应用包名的情况PackageManager packageManager = getPackageManager();Intent intent= packageManager.getLaunchIntentForPackage("package.name");startActivity(intent);2. 对于知道应用首页scheme的情况Intent int...原创 2020-02-26 16:43:39 · 595 阅读 · 0 评论 -
Android Activity生命周期出现异常
表现状况:1. 在activityA中start activityB,注意该过程没有finish的操作;2. 在activityB中finish自己;3. 回到activityA,发现原来的成员变量全部被清零/null,而且执行了onCreate方法 预期情况:应该是activityA保留所有成员变量的值,从onStart方法开始执行 可能的原因:1. 最恶...2017-04-25 11:35:40 · 190 阅读 · 0 评论 -
Android SearchView相关细节
以下所有内容都是针对android.support.v7.widget.SearchView,相比于默认的SearchView拥有更多的可配置性。 1. SearchView默认的状态是一个搜索图标,点一下才会展开输入框,如果想默认处于展开状态,可以调用如下方法:searchView.setIconifiedByDefault(false); 带来的副作用是此时的SearchVi...2017-04-27 18:19:31 · 312 阅读 · 0 评论 -
Android Gradle命令打包
以下都在app module的build.gradle中操作 1. 设置打包的apk名字android { defaultConfig { ... versionCode 2 versionName "1.1" // 设置打包的apk名字 setProperty("archivesB...2017-05-05 11:56:32 · 230 阅读 · 0 评论 -
移动适配预览
对于安卓适配,一般情况下,如果使用dp为单位布局,可以考虑以 mdpi 320dp*480dp 作为参考2016-01-20 18:10:48 · 96 阅读 · 0 评论 -
Activity和Fragment生命周期
搬运自Android Developer Activity Managing the Activity Lifecycle As you'll learn in the following lessons, there are several situations in which an activity transitions between different st...原创 2016-01-22 16:24:32 · 91 阅读 · 0 评论 -
adb cannot connect to daemon
问题:* daemon not running. starting it now on port 5037 *error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: XXX(10048)could not read ok from ADB Server* failed to s...2016-01-23 14:55:42 · 599 阅读 · 0 评论 -
实现Parcelable
Activity之间通过intent传递object时,该object的class需要实现Parcelable。 Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must als...2016-02-23 20:32:58 · 125 阅读 · 0 评论 -
java容易忽略的问题
1. float运算的坑float f = 9.9f;float m = f * 100.0f;System.out.println(m); 结果并不是990不管是乘以100还是100.0f 8.9f 也有这个问题 2. string split问题String ss = "5.11.17.0/24,,2635167,,0,1,,,,";int ...原创 2016-03-04 14:32:39 · 115 阅读 · 0 评论 -
Android5按钮阴影
Android 5 (Lollipop) 版本的按钮自带阴影,部分场合比较难看,取消阴影的方法 Lollipop has a nasty little feature called stateListAnimator which handles the elevations on Buttons, which leads to shadows. Remove the stat...2016-03-10 15:06:11 · 101 阅读 · 0 评论 -
Android6及以上版本获取MAC地址
为给用户提供更严格的数据保护,从 Android 6.0 (Marshmallow) 版本开始,对于使用 WLAN API 和 Bluetooth API 的应用,Android 移除了对设备本地硬件标识符的编程访问权。WifiInfo.getMacAddress() 方法和 BluetoothAdapter.getAddress() 方法现在会返回常量值 02:00:00:00:00:00。...2017-06-01 20:40:41 · 299 阅读 · 0 评论 -
颜色透明度的十六进制值
Android uses Hex ARGB values, which are formatted as #AARRGGBB. That first pair of letters, the AA, represent the Alpha Channel. You must convert your decimal opacity values to a Hexdecimal value. H...2016-03-12 11:58:19 · 382 阅读 · 0 评论 -
Activity以Dialog形式出现
1. 正常定义Activity <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:...2016-03-12 14:49:37 · 1414 阅读 · 0 评论 -
okhttp3同步请求使用总结
官方文档:https://github.com/square/okhttp/wiki/Recipeshttps://github.com/square/okhttp 以下只考虑小数据量请求,比如请求rest json API 相关注意点1. okhttp3比较多的地方使用了builder模式,OkHttpClient、Request、FormBody等都可以通过&l...2016-03-18 15:55:43 · 1662 阅读 · 0 评论 -
Android权限控制EasyPermissions
EasyPermissions项目地址 https://github.com/googlesamples/easypermissions 1. 在AndroidManifest定义权限<uses-permission android:name="android.permission.CAMERA" /> 2. 在需要权限的方法前添加注解 @AfterPermiss...2017-11-25 00:13:46 · 240 阅读 · 0 评论 -
日期相关操作
代码在java8测试过,默认返回的日期都是零点时间戳 1. 获取某一周的第一天public long getWeekMonday(long millis) { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(millis); // 设置一周的第一天是星期一 cal.set...2017-12-27 11:16:19 · 161 阅读 · 0 评论 -
Android异步函数单元测试
大部分内容也适合Java,此处主要是对sdk类别的module做unit test,不涉及UI 1. 配置1) 对于涉及到android原生的类库返回默认的对象,否则,之后遇到Log之类的语句都需要手动mock,但是不要期待这个配置对android API提供全面的支持 testOptions { unitTests.returnDefaultValues = t...2015-12-23 12:11:20 · 217 阅读 · 0 评论 -
安卓签名文件及解析
1. Android Studio默认的apk打包文件地址用户根目录/.android/debug.keystoreAndroid Studio - debug keystoreWhere the debug.keystore in Android Studio Eclipse ADT基本一致:Windows->Preference->Android->B...2015-12-21 17:26:03 · 420 阅读 · 0 评论 -
Android UNEXPECTED TOP-LEVEL EXCEPTION
1. 初次遇到这个错是在build.gradle中添加了compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8} 原因是Android现在最高只支持到jdk7的语言特性参见Which JDK ver...2015-12-18 17:09:43 · 192 阅读 · 0 评论 -
关于onActivityResult的一些细节
1. onActivityResult是比onResume先调用的,而且如果onActivityResult中的code比较耗时的话,会阻塞onResume,可以通过如下的code进行测试:public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "on acti...2016-05-06 14:55:16 · 169 阅读 · 0 评论 -
使用原生的HttpURLConnection库进行网络请求
这边只考虑json格式轻量级的数据请求。 除了部分像Build.VERSION.SDK_INT这样的只属于android的sdk API,其他是java通用。 URL openConnection获取的URLConnection实例由平台和http类型决定,比如安卓从4.4版本开始,http的url底层为com.android.okhttp.internal.http.Http...2016-07-22 15:04:16 · 242 阅读 · 0 评论 -
关于Set和Map的注意事项
1. HashSet和HashMappublic boolean add(E e)Adds the specified element to this set if it is not already present. More formally, adds the specified element e to this set if this set contains no elem...2016-08-04 17:06:37 · 112 阅读 · 0 评论 -
Android Studio Gradle Configuration Errors总结
1.Error:Configuration with name 'default' not found. 这样的错误乍看无从下手,但是gradle提供了一个命令可以进一步地定位具体的错误gradlew.bat assembleDebug --info 此时将获取到进一步的错误信息,比如我的FAILURE: Build failed with an exception....原创 2015-09-22 10:13:14 · 277 阅读 · 0 评论 -
Android扫描二维码
这里主要介绍一款控件 zxing-android-embedded 。 直接使用 ZXing 当然也不是不可以,甚至zxing现在也提供了android-integration,但是需要用户下载zxing的安卓应用,而该应用功能又有些冗余,于是很多blog都提供了一些精简的步骤,但是,一定程度上增加了开发负担,此时正是 zxing-android-embed...原创 2015-09-22 23:47:26 · 175 阅读 · 0 评论 -
Android SharedPreferences使用
1. 常规操作 1)保存简单变量final SharedPreferences prefs = activity.getSharedPreferences(CACHE_NAME, 0);SharedPreferences.Editor spEditor = prefs.edit();spEditor.putString(CACHED_STR_CO...2015-09-23 15:42:53 · 91 阅读 · 0 评论 -
Android点击空白处隐藏软键盘
首先声明下,以下内容主要参考自http://www.2cto.com/kf/201505/401382.html由于部分代码实际使用过程中有些问题,做了部分更改,主要在方法2: 1. 一般直接使用如下方式即可 @Overridepublic boolean onTouchEvent(MotionEvent event) { if(event.getActi...原创 2015-09-27 15:14:22 · 287 阅读 · 0 评论 -
Android计时器和倒计时
1. 计时器两个核心类 Timer 和 TimerTask 1) Timer核心方法 //Schedules the specified task for execution after the specified delay.void schedule(TimerTask task, long delay)//Schedules the specified t...2015-10-02 13:48:19 · 1581 阅读 · 0 评论 -
Android混淆编译
1. Android Studio / Gradle如果有多个module,只要对application module定义混淆编译即可,对application module的build.gradle,修改minifyEnabled为true android { //... buildTypes { release { ...2015-10-02 14:41:12 · 143 阅读 · 0 评论 -
动态更新字体大小以适应组件宽度
起始需求是TextView能够根据自身宽度自动调整字体大小,有以下链接可以参考Auto Scale TextView Text to Fit within BoundsAuto-fit TextView for AndroidUsing auto resize to fit EditText in Android (该文章列出了一些github的项目)只是在我的项目中表现并不好。...2015-10-18 16:51:04 · 315 阅读 · 0 评论 -
通过Paint和Canvas绘制动态的打勾和打叉效果
效果 几个要点:1. 坐标系以左上角为原点,横X竖Y 2. 笔刷Paint Paint paint = new Paint();//设置画笔颜色paint.setColor(getResources().getColor(R.color.arc_fail_color));//设置画笔的宽度paint.setStrokeWidth(lineT...2015-10-18 18:50:18 · 1926 阅读 · 0 评论 -
安卓系统已安装软件的判断及通过程序安装
1. 查看系统是否已经安装某个应用private boolean appInstalledOrNot(String uri) { PackageManager pm = getPackageManager(); boolean appInstalled; try { pm.getPackageInfo(uri, 0); ap...2015-11-03 10:47:05 · 173 阅读 · 0 评论 -
安卓Platform版本和API版本之间的关系
官网地址 Platform VersionAPI LevelVERSION_CODENotesAndroid 6.023MAPI ChangesAndroid 5.122LOLLIPOP_MR1Platform HighlightsAndroid 5.021LOLLIPOPAndroid...原创 2015-11-03 16:21:42 · 814 阅读 · 0 评论 -
DownloadManager使用及进度更新
1. Android SD存储相关1) 检查SD状态 if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Toast.makeText(MainActivity.this, "无法操作SD卡", Toast.LENGTH_LONG).show(); ret...2015-11-24 18:44:45 · 483 阅读 · 0 评论 -
gradle sync太慢的问题
原因是国内访问jcenter太慢,甚至连接不上,就会报各种关于依赖更新失败的错误。 以前oschina(也就是开源中国)提供了jcenter的镜像地址,然而不幸的是因为各种原因,最近停止服务了开源中国 Maven 镜像库关闭访问 幸运的是阿里云提供了jcenter镜像 http://maven.aliyun.com/ 可以在工程gradle中如下修改,加速gradl...2016-11-07 17:04:47 · 2209 阅读 · 0 评论 -
Android5及以上版本设置状态栏颜色
Android5(LOLLIPOP, API-21)以及以上版本可以设置status bar(状态栏,显示时间和电池信息的地方)颜色 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowMa...2016-04-27 15:26:26 · 307 阅读 · 0 评论