Android中调用隐藏类中的方法

简介: 终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~在写Android的时候,有些类是隐藏类,因而无法直接调用,比如AnimatedRotateDrawable这个类,该类类名上有@hide标注,表明该类是一个隐藏类。

终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~

在写Android的时候,有些类是隐藏类,因而无法直接调用,比如AnimatedRotateDrawable这个类,该类类名上有@hide标注,表明该类是一个隐藏类。若想通过该类的实例调用setFramesDuration来设置对应的帧播放时间来说,无法实现。下面通过反射的方法来调用该方法,具体代码如下:

第一句代码

	Drawable drawable = button.getDrawableTop();
        if (!(drawable instanceof Animatable))return;
        try {
             Method m1 = drawable.getClass().getDeclaredMethod("setFramesDuration",int.class);
             m1.invoke(drawable,50);
         } catch (Exception e) {
           e.printStackTrace();
         }

先看下rotate.xml里面的代码:

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/home_bottom_menu_news_refresh_night"
    android:pivotX="50%"
    android:pivotY="50%">
    <!--android:interpolator="@android:anim/accelerate_decelerate_interpolator"-->
    <!--android:framesCount = "12"-->
    <!--android:frameDuration = "100"-->
</animated-rotate>

在xml里面可以设置frameDuration来控制帧的播放时间,在Java代码中先通过AnimatedRotateDrawable获取Drawable实例,然后通过反射获取该实例对应的setFramesDuration方法Method的实例,最后通过反射m1.invoke(drawable,50)调用对应的方法。方法很简单,就是通过反射来获取隐藏类的对应方法,然后通过反射的方式调用该方法,从而完成相应的功能。

目录
相关文章
|
4月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
89 2
基于Android P,自定义Android开机动画的方法
|
4月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
217 2
|
2月前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
80 15
Android 系统缓存扫描与清理方法分析
|
2月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
34 1
|
1月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
53 0
|
2月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
27 2
|
3月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
51 2
|
4月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
236 1
|
4月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
580 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
4月前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
41 0