Tag Archive: Android

使用 Apktool 逆向 Android APK

Apktool 是对 smali/baksmali 的一个封装,smali 和 baksmali 可以看做是 Android 的 assembler 和 disassembler,Apktool 在其基础上提供了更便捷的使用方法。 1. 建立测试工程   首先来建立一个测试工程。新建一个 Android APP 工程,只包含一个 TextView,在 MainActivity 中创建一个名为 na…
Read more

去除 Android API Level 21 及以上 Button 的点击效果

  Android 提供的 Button 默认带有点击效果,在 API Level 21 及以上,即使单独设置了 background,点击按钮时仍会有一个类似上浮的效果。可以通过使用 Widget.AppCompat.Button.Borderless 的 style 来去除点击效果,如:

  Widget.AppCompat.B…
Read more

为FloatingActionButton添加滑动隐藏和显示的行为

  位于列表上的FloatingActionButton有时会挡住列表的内容,可以通过为FloatingActionButton添加自定义layout_behavior的方式,在向下滚动列表时隐藏FloatingActionButton,向上滚动列表时显示FloatingActionButton,如图1所示。 0. 布局   这里使用的布局如下,在CoordinatorLayout中放置了Recy…
Read more

处理View滑动冲突的一种方法

  当界面中内外两层View都可以滑动时,就会产生滑动冲突。比如一个列表型的ViewGroup里面盛放了若干个View,ViewGroup可以垂直滚动,而里面的View又支持水平滑动的手势,当用户在ViewGroup和View的重叠区域滑动手指时,就会产生滑动冲突——无法判断当前滑动操作应当由ViewGroup还是View来进行处理。本文通过一个简单的例子,说明滑动冲突的一种处理方法。 1. 构造…
Read more

通过直接继承ViewGroup来实现自定义ViewGroup的方法简介

  本文通过实现一个可以垂直滑动的列表型ViewGroup,介绍通过继承ViewGroup来实现自定义ViewGroup的方法。 1. 创建继承ViewGroup的自定义ViewGroup   首先创建VerticalScrollView直接继承自ViewGroup:

2. 自定义ViewGroup的属性和构造器   类似于自定义V…
Read more

通过直接继承View来实现自定义View的方法简介

  在设计自定义View时,可以选择直接继承View、直接继承ViewGroup、继承特定View、继承特定ViewGroup等方式。本文通过实现一个在屏幕上绘制矩形的自定义View,介绍通过继承View来实现自定义View的方法。 1. 创建继承View的自定义View   首先创建BlockView直接继承自View:

2. 配…
Read more

在Toolbar中放置Spinner

  在展示列表时,可以通过在Toolbar中放置Spinner的形式,提供对列表进行过滤和分类的功能。本文在RecyclerView使用方法举例(2)的基础上,为Toolbar添加一个用于选择电影排序方法的Spinner,如图1所示。 0. 关于排序字符串的处理   之前在MovieService.java中定义了三种排序方式:按照流行度降序、按照投票平均分降序、按照投票量降序,如下所示: [cr…
Read more