使用 Apktool 逆向 Android APK
Apktool 是对 smali/baksmali 的一个封装,smali 和 baksmali 可以看做是 Android 的 assembler 和 disassembler,Apktool 在其基础上提供了更便捷的使用方法。 1. 建立测试工程 首先来建立一个测试工程。新建一个 Android APP 工程,只包含一个 TextView,在 MainActivity 中创建一个名为 na…
Read more
learn, build, evaluate
Apktool 是对 smali/baksmali 的一个封装,smali 和 baksmali 可以看做是 Android 的 assembler 和 disassembler,Apktool 在其基础上提供了更便捷的使用方法。 1. 建立测试工程 首先来建立一个测试工程。新建一个 Android APP 工程,只包含一个 TextView,在 MainActivity 中创建一个名为 na…
Read more
最近在 Android 5.x 上遇到了一个 PopupWindow 无法消失的问题,PopupWindow 已经设置了 popup.setOutsideTouchable(true); 但点击 PopupWindow 外部无法消除 PopupWindow。在 Android 6.0 上没有此问题。 该问题的原因是在使用PopupWindow时,为了取消默认的带阴影效果,使用了 popup…
Read more
Android 提供的 Button 默认带有点击效果,在 API Level 21 及以上,即使单独设置了 background,点击按钮时仍会有一个类似上浮的效果。可以通过使用 Widget.AppCompat.Button.Borderless 的 style 来去除点击效果,如: <Button style="@style/Widget.AppCompat.Button…
Read more
位于列表上的FloatingActionButton有时会挡住列表的内容,可以通过为FloatingActionButton添加自定义layout_behavior的方式,在向下滚动列表时隐藏FloatingActionButton,向上滚动列表时显示FloatingActionButton,如图1所示。 0. 布局 这里使用的布局如下,在CoordinatorLayout中放置了Recy…
Read more
当界面中内外两层View都可以滑动时,就会产生滑动冲突。比如一个列表型的ViewGroup里面盛放了若干个View,ViewGroup可以垂直滚动,而里面的View又支持水平滑动的手势,当用户在ViewGroup和View的重叠区域滑动手指时,就会产生滑动冲突——无法判断当前滑动操作应当由ViewGroup还是View来进行处理。本文通过一个简单的例子,说明滑动冲突的一种处理方法。 1. 构造…
Read more
本文通过实现一个可以垂直滑动的列表型ViewGroup,介绍通过继承ViewGroup来实现自定义ViewGroup的方法。 1. 创建继承ViewGroup的自定义ViewGroup 首先创建VerticalScrollView直接继承自ViewGroup: public class VerticalScrollView extends ViewGroup { } 2. 自定义ViewG…
Read more
在设计自定义View时,可以选择直接继承View、直接继承ViewGroup、继承特定View、继承特定ViewGroup等方式。本文通过实现一个在屏幕上绘制矩形的自定义View,介绍通过继承View来实现自定义View的方法。 1. 创建继承View的自定义View 首先创建BlockView直接继承自View: public class BlockView extends View {…
Read more
SearchRecentSuggestionsProvider是用于实现简易搜索历史Provider的父类,官方API Guide在Adding Recent Query Suggestions一节介绍了添加搜索历史的方法,具体来说,除了必要的xml配置,只需实现自己的Provider继承SearchRecentSuggestionsProvider: public class MySugge…
Read more
在展示列表时,可以通过在Toolbar中放置Spinner的形式,提供对列表进行过滤和分类的功能。本文在RecyclerView使用方法举例(2)的基础上,为Toolbar添加一个用于选择电影排序方法的Spinner,如图1所示。 0. 关于排序字符串的处理 之前在MovieService.java中定义了三种排序方式:按照流行度降序、按照投票平均分降序、按照投票量降序,如下所示: Str…
Read more
ItemTouchHelper是用来为RecyclerView添加Swipe to Dismiss和Drag & Drop行为的帮助类,使用它可以很方便地实现对RecyclerView中item的扫动和拖拽动作。 ItemTouchHelper通过ItemTouchHelper.Callback和你的具体应用进行交互,ItemTouchHelper.Callback负责控制所希望使…
Read more