|
|
本帖最后由 手机用户Ig54093 于 2024-7-18 00:40 编辑
最近看到群里有人QQ主题可以修改美化,把背景改为视频动态显示,就想着微信能不能也搞成这样,然后去找了一下那些所谓的“定制v”各种价格,还是只能更改为图片就放弃了,一向打着能白嫖绝不花钱原则的我,想着自己来修改,结果就是把聊天界面修改成功了,把ImageView改为VideoView,实现用视频显示背景
--------------------------------------------------------------------
使用工具:Lsposed,Android Studio
适用版本8.0.48,其他版本自测,下面代码cv就可以使用
代码有一个bug,需要打开微信->我->设置->聊天->聊天背景->选择背景图(随便选一张)->将选择的背景图应用到所有聊天场景,否则没有效果
- XposedHelpers.findAndHookMethod("com.tencent.mm.ui.chatting.component.u1", lpparam.classLoader, "N0", new XC_MethodHook() {
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
- super.afterHookedMethod(param);
- // 获取u1实例
- Object u1Instance = param.thisObject;
- // 获取ImageView对象
- ImageView imageView = (ImageView) XposedHelpers.getObjectField(u1Instance, "f");
- if (imageView != null) {
- // 替换ImageView为VideoView
- VideoView videoView = new VideoView(imageView.getContext());
- videoView.setLayoutParams(imageView.getLayoutParams());
- videoView.setScaleX(imageView.getScaleX());
- videoView.setScaleY(imageView.getScaleY());
- videoView.setRotation(imageView.getRotation());
- videoView.setZOrderMediaOverlay(true); // 确保VideoView在前景
- // 设置背景为透明,以避免黑色背景
- videoView.setBackground(new ColorDrawable(0x00000000));
- // 从ImageView的父布局中移除ImageView,并添加VideoView
- ViewParent parent = imageView.getParent();
- if (parent instanceof ViewGroup) {
- ViewGroup viewGroup = (ViewGroup) parent;
- int index = viewGroup.indexOfChild(imageView);
- viewGroup.removeView(imageView);
- viewGroup.addView(videoView, index);
- }
- // 设置视频文件路径
- File videoFile = new File(PATH + "Video_Background.mp4");
- if (videoFile.exists()) {
- Uri videoUri = Uri.fromFile(videoFile);
- videoView.setVideoURI(videoUri);
- videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
- @Override
- public void onPrepared(MediaPlayer mp) {
- videoView.start(); // 准备完成后开始播放
- }
- });
- videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- videoView.start(); // 播放完成后重新开始
- }
- });
- }
- }
- }
- });
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|