Cool Android Apis 整理(一)

本文整理并详细解析了Android开发中的一些实用方法、类和接口,包括Activity.startActivities()、TextUtils.isEmpty()、Html.fromHtml()等。还介绍了如何使用View.isShown()替代view.getVisibility()==View.VISIBLE的判断方式,提供了PhoneNumberUtils.convertKeypadLettersToDigits方法的用法,以及ArgbEvaluator方法用于颜色渐变的实现。此外,文章还提到了ValueAnimator.reverse方法在取消动画效果时的高效使用。

Foreword

本文主要整理 Cool Android Apis

整理来源

所以说严格来讲这篇文章基本不是原创,但是我对每个Tip都加入或官方文档或使用方法或效果之类的补充。整个来说算是 “把书读厚” 的过程吧。

Content

其实我们绝大多数的开发者可能是没有用过这个方法的,根据我个人理解,用的到场景并不多。这个方法最直接的理解就是使用intent开启多个Activity,我在Google的关于Activity.startActivities()文档说明中,并没有获取到除了StartActivity之外更多的信息。于是我继续扒源码,果然在Context和ContextCompat 下找到了更加详细的说明和解释。

Context,以及 documentation of ContextCompat

* Launch multiple new activities.  This is generally the same as calling
* {@link #startActivity(Intent)} for the first Intent in the array,
* that activity during its creation calling {@link #startActivity(Intent)}
* for the second entry, etc.  Note that unlike that approach, generally
* none of the activities except the last in the array will be created
* at this point, but rather will be created when the user first visits
* them (due to pressing back from the activity on top).

从上面两处文档解释我们可以理解到的,startActiviyies 会创建一个新的Task Stack,任务栈里Activity的位置基于我们传入的Intent数组。当我们按返回键时,就会将栈顶的Activity移除。。其实这也是framework管理用户开启的activity的方式。这里结合Activity的启动模式来理解,就简单多了。

至于应用场景,我目前能想到的就是点击通知栏来开启应用的Activities,而开启哪些Activity以及相应顺序,我们就可以用到这个方法了。

这个我想应该大部分同学都应该用过,具体些的说明: 如果传入的String 为NULL或者Length为0的话就返回false。

如果你对Html熟悉的话,可以很迅速通过这个方法处理一些富文本操作。比如超链接和图文排版等处理。

Example:

linkView.setText(
              Html.fromHtml(
                      "<b>fromHtml:</b>  \t Click " +
                              "<a href=\"http://oakzmm.com\">here</a> " +
                              "to visit my website "
              )
      );

这个还是直接上图吧

有不少人在知乎提到这个知识点,说是可以代替 view.getVisibility() == View.VISIBLE 这样的判断。
但是,但是,我做了下测试:


   
editText = (EditText) findViewById(R.id.text);
   System.out.println("------------------" + editText.isShown());
   System.out.println("------------------" + (editText.getVisibility() == View.VISIBLE));

log:

08-05 16:47:29.822  12720-12720/com.macouen.testdemo I/System.out﹕ ------------------false
08-05 16:47:29.822  12720-12720/com.macouen.testdemo I/System.out﹕ ------------------true

然而Google文档):


   
public boolean isShown ()                  Added in API level 1
Returns the visibility of this view and all of its ancestors
Returns
True if this view and all of its ancestors are VISIBLE

摔!老老实实用 view.getVisibility() == View.VISIBLE 吧。

有些时候我们的app需要根据不同的SDK版本进行执行不同的操作

Example:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
       ActionBar actionBar = getActionBar();
       actionBar.setDisplayHomeAsUpEnabled(true);
   }

这个方法简单粗暴,但是我没用过。这个方法会将输入的字母根据键盘上的映射转换为数字。

Translates any alphabetic letters (i.e. [A-Za-z]) in the specified phone number into the equivalent numeric digits, according to the phone keypad letter mapping described in ITU E.161 and ISO/IEC 9995-8.

所谓的ITU E.161 标准的键盘就是我们常用的T9键盘。也就是这样

!!重点这个方法简直不要太吊。。
ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue);根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色,分分钟实现类似于微信底部栏滑动颜色渐变。
这里提供另一个颜色渐变的版本

From Google Sample SlidingTabsColors下的 SlidingTabStrip.java


   
/**
    * Blend {@code color1} and {@code color2} using the given ratio.
    *
    * @param ratio of which to blend. 1.0 will return {@code color1}, 0.5 will give an even blend,
    *              0.0 will return {@code color2}.
    */
   private static int blendColors(int color1, int color2, float ratio) {
       final float inverseRation = 1f - ratio;
       float r = (Color.red(color1) * ratio) + (Color.red(color2) * inverseRation);
       float g = (Color.green(color1) * ratio) + (Color.green(color2) * inverseRation);
       float b = (Color.blue(color1) * ratio) + (Color.blue(color2) * inverseRation);
       return Color.rgb((int) r, (int) g, (int) b);
   }

PS:这里说到ARGB,简单的提一下关于Alpha的问题 (和这个Tip并没有联系)。在Google I/O 2013大会上 Romain Guy 在Android Graphics Performance 这部分提到了 use alpha with care 。具体的可以参考:

Added in API level 14

Space is a lightweight View subclass that may be used to create gaps between components in general purpose layouts.

最棒的一点是Space可以跳过 Draw 这个过程。

之前见不少人提过这个方法,都是说可以顺畅的取消动画效果。文档中是这样说的。

Plays the ValueAnimator in reverse. If the animation is already running, it will stop itself and play backwards from the point reached when reverse was called. If the animation is not currently running, then it will start from the end and play backwards. This behavior is only set for the current animation; future playing of the animation will use the default behavior of playing forward.

也就是说这个方法其实是反转动画,如果动画正在播放,这个方法停止动画,并从当前点往回播。如果动画已经播放完毕那就反过来一遍。那么也就是说 “顺畅的取消动画效果” ,是动画还在播放的是时候来调用 reverse 这个方法。


待续。

声明

  1. 由于互联网数据的分享性,如果我发表的文章,来源于您的原创文章,且我没有注明,请微博私信或者邮件macouen@gmail.com说明。
  2. 欢迎转载,但请注明文章原始出处。

作者:Oak_Zmm
出处:http://oakzmm.com/

Beyond Compare是款文件差异比较工具的文件和文件夹比较工具,使用该工具可以可视化和调整差异, 合并修改,同步文件夹。支持文件夹比较,文件夹合并和同步,文本比较,表格比较,图片比较,16进制比较,注册表比较,版本比较等;调整差异,合并修改,内置文件浏览器可以针对文件、文件夹之间的差异对比及上传同步。 Beyond Compare 5.0.4.30422是款先进的文件和文件夹比较工具,它能够帮助用户高效地识别和管理文件差异,支持多种文件类型和格式的比较。使用Beyond Compare,用户可以轻松地对文件夹内容进行同步,无论是进行简单的文件复制还是复杂的项目同步任务。此外,该工具还具备了高级的文件比较功能,如文本比较、表格比较、图片比较、16进制比较以及注册表比较,覆盖了从纯文本到二进制文件的广泛使用场景。 对于文本文件的比较,Beyond Compare提供了语法高亮和行号等辅助功能,让用户在审查代码或文档时能更快地定位差异点。表格比较功能则特别适用于数据分析和处理任务,可以快速识别两个Excel电子表格之间的不同之处。在进行图片文件的比较时,用户可以通过直观的视图了解图片之间的微小差别,这在图像处理和质量控制中尤其有用。 此外,16进制比较功能为开发者提供了深入分析二进制文件差异的手段,无论是在软件开发还是在数据恢复方面都大有裨益。注册表比较则专注于Windows系统的核心配置文件,帮助IT专业人员快速定位系统配置的变化,这对于系统维护和故障排除尤其重要。 Beyond Compare内置的文件浏览器允许用户在个界面内完成文件的浏览、比较和同步操作,极大的提高了工作效率。内置的差异调整和合并修改功能让同步文件夹的工作更加精确和便捷。用户可以针对不同的文件和文件夹进行个性化设置,实现定制化的比较和同步策略。
内容概要:本文介绍了种基于Simulink的发电机故障暂态仿真模型,旨在深入研究发电机在发生各类短路故障(如单相接地、两相短路接地及两相相间短路)时电压与电流的动态变化特性。该模型精确构建了发电机及其保护系统的电气结构,能够有效模拟故障瞬间的暂态响应过程,全面分析不同接地方式(中性点不接地、经小电阻接地、经消弧线圈接地)对系统电气量的影响。通过仿真获取的电压、电流波形数据,可用于评估电力系统的暂态稳定性、验证继电保护装置的动作逻辑与灵敏性,并为系统控制策略优化及故障诊断提供理论支撑和技术依据。; 适合人群:电气工程及其自动化、电力系统及其相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真分析、继电保护设计、电网运行维护等工作的工程技术人员。; 使用场景及目标:①用于高校教学与科学研究中对发电机故障机理及暂态过程的可视化分析与深入探讨;②支撑电力系统安全稳定分析、保护定值整定计算、控制策略优化与应急预案制定;③为实际电网故障后的诊断溯源、事故回溯与应急处置决策提供可靠的仿真平台与理论指导。; 阅读建议:建议读者结合MATLAB/Simulink仿真环境进行实践操作,按照文档指导逐步搭建仿真模型,设置不同类型的故障条件进行对比实验,重点观察并分析电压、电流波形的幅值、相位及衰减特性,深入理解其物理成因与系统影响,有条件者可进步将模型扩展至多机系统以提升研究的工程应用价值。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在信息技术行业,特别是智能手机维修和改进的范畴内,“高通9008免拆机救黑砖教程工具”被视为种通用的处理手段,它主要服务于那些面对设备无法正常运作或处于“黑砖”状态的消费者。这个压缩文件内含针对搭载高通处理器的智能手机的救援指南与实用工具,其核心目标在于协助用户在不进行物理拆解的前提下,成功进入9008模式,进而完成对手机的修复。 我们必须明确理解“高通9008模式”的概念。9008代表了高通芯片的种下载状态,也称作EDL(eMMC Download Mode)。在该状态下,用户或技术人员能够直接对手机的存储单元进行编程操作、系统升级或固件回载,以此应对软件层面的故障。此类模式般应用于手机无法正常启动或遭遇严重故障的场合,属于种较为根本性的修复措施。 “黑砖”状态描述了手机因软件层面的异常而无法开机或完全失去反应的情况,其成因通常涉及系统崩溃、刷机失败、恶意软件入侵等。当常规的恢复措施如强制重启、恢复界面等手段均告无效时,就需要借助9008模式这类特殊通道来实施修复。 小米品牌手机广泛采用了高通处理器,因此当其产品遭遇黑砖问题时,该教程工具显示出极大的实用价值。此压缩文件可能包含以下组成部分: 1. **救砖教程**:提供详尽的流程说明,引导用户如何安全地将设备导入9008模式,以及如何运用相关工具执行固件恢复或刷新操作。 2. **驱动程序**:高通9008模式的有效运行依赖于特定的驱动程序以实现与电脑的通信,压缩包中或许就整合了这些驱动,用户需先行安装它们以便连接手机并开展修复工作。 3. **线刷工具**:诸如MiFlash、QFIL等工具,它们能够支持用户通过...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值