0

xposed モジュールを使用してバッテリーを追跡し、既存のバッテリー メーターを削除し、独自のバッテリー メーターを動的に追加する方法を知りたいです。どうやって始めたらいいのかわからない。ソースコードをいくつか見ましたが、それらがどのように機能するのか理解できませんでした。開始するためのいくつかの例または基本的なアイデアを提供してください(リンクも非常に役立ちます)

以下は、私の ROM (CoolUI8) 内のレイアウト ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center_vertical" android:id="@id/system_icons" android:layout_width="wrap_content" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <com.android.keyguard.AlphaOptimizedLinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:id="@id/statusIcons" android:layout_width="wrap_content" android:layout_height="fill_parent" />
    <include android:id="@id/msim_hd_voice_on" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="2.0dip" layout="@layout/hd_voice_on" />
    <include android:id="@id/msim_signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="2.0dip" layout="@layout/signal_cluster_view_yulong" />
    <com.android.systemui.BatteryViewGroup android:id="@id/battery_field" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="4.0dip">
        <TextView android:textAppearance="@style/TextAppearance.StatusBar.Text.Style" android:layout_gravity="center_vertical" android:id="@id/battery_level" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="@dimen/battery_level_padding_end" />
        <FrameLayout android:layout_gravity="center_vertical" android:id="@id/battery_group" android:layout_width="wrap_content" android:layout_height="wrap_content">
            <ImageView android:id="@id/battery_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/stat_sys_battery_frame" android:scaleType="center" />
            <com.android.systemui.BatteryMeterView android:id="@id/battery" android:layout_width="25.0dip" android:layout_height="12.0dip" />
            <ImageView android:id="@id/battery_charge" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="25.0dip" android:src="@drawable/stat_sys_battery_charge_flag" android:scaleType="center" />
        </FrameLayout>
    </com.android.systemui.BatteryViewGroup>
</LinearLayout>

既存のバッテリー メーターを非表示にすることに成功しました (ID: battery_group で FrameLayout 全体を非表示にしました) が、そこにカスタム バッテリー メーターを追加したいです... このトピックに関連する情報があれば返信してください :)

4

1 に答える 1

0

xposedモジュールで、WhatsAppの青い目盛りを黒に置き換えています。あなたの問題は私のものと似ていると思います。

これが役立つかどうかはわかりませんが、xposed を使い始めるのに役立ちます。

このメソッドは IXposedHookInitPackageResources インターフェイスから実装できます

@Override
public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam initPackageResourcesParam) throws Throwable {
    if (!initPackageResourcesParam.packageName.equals("com.whatsapp"))
        return;

    //create the resource instance for your package
    modRes = XModuleResources.createInstance(MODULE_PATH, initPackageResourcesParam.res);

    //example to change xml attribute like dimension
    initPackageResourcesParam.res.setReplacement("com.whatsapp", "dimen", "tab_height", modRes.fwd(R.dimen.tab_height));

    //example to replace icon -- battery icon in your case
    initPackageResourcesParam.res.setReplacement("com.whatsapp", "drawable", "message_got_read_receipt_from_target", modRes.fwd(R.mipmap.ic_black_tick_conv));
    initPackageResourcesParam.res.setReplacement("com.whatsapp", "drawable", "message_got_read_receipt_from_target_onmedia", modRes.fwd(R.mipmap.ic_black_tick_conv));
    initPackageResourcesParam.res.setReplacement("com.whatsapp", "drawable", "msg_status_client_read", modRes.fwd(R.mipmap.ic_black_tick_main));

}

私のxposedモジュールコードを参照して、xposedの例をいくつか見ることができます

https://github.com/suraj0208/WhatsappExtensions

最後に、これが回答として受け入れるのに役立つ場合。左の目盛りアイコン:D

于 2016-12-13T03:25:21.253 に答える