Saturday, October 4, 2014

[GUIDE][JB] HOW TO ADD NEW PAGE ON VIEW PAGER

HOW TO ADD NEW PAGE ON VIEW PAGER, Hallo droiders, kalo sebelumnya ane ngeshare HOW TO SWIPING POWERTOGLE kali ini ane mau ngeshare guide lainnya, yaitu HOW TO ADD NEW PAGE ON VIEW PAGER, yup ini adalah pengembangan dari viewpagernya serajr, jadi guide ini bermaksud gmna caranya nambah page di view pager, kan umumnya 3 tuh, nah ini bisa di tambahkan.


Berhubung ini guide try and error ane sendiri, jadi kalo ada yang terlewat ya mangap hehe, oiya disini ane nambah page informasi yah, bisa di liat SSnya nanti di bawah, ok langsung aja :

Bahan-bahan :
  1. APK MULTI TOOLS, APK TOOLS, alat untuk compile/decompile lainnya.
  2. SystemUI.apk yang udah terpasang view pager tentunya
  3. Niat
Langkah-langkahnya :
  • Decompile SystemUI.apk
  • Download bahannya disini
  • Ekstrak lalu taroh di tempat masing2
  • Buka values/ids.xml lalu tambahkan :
<item type="id" name="music_contents">false</item>
    <item type="id" name="state_diagram">false</item>
    <item type="id" name="halo_bg">false</item>
  • Buka strings.xml, lalu tambahkan :
<string name="cpu_label">CPU</string>
    <string name="memory_label">MEMORY</string>
    <string name="traffic_label">TRAFFIC SIM1</string>
    <string name="traffic_label_sim2">TRAFFIC SIM2</string>
    <string name="signal_label">SIGNAL</string>
    <string name="unkown_label">UNKOWN</string>
    <string name="battery_label">BATTERY</string>
    <string name="battery_history_days">%1$dd %2$dh %3$dm %4$ds</string>
    <string name="battery_history_hours">%1$dh %2$dm %3$ds</string>
    <string name="battery_history_minutes">%1$dm %2$ds</string>
    <string name="battery_history_seconds">%1$ds</string>
    <string name="battery_stats_on_battery">%1$s on battery</string>
    <string name="current">current: %1$s</string>
    <string name="current_rate">currently used: %1$s</string>
    <string name="total_traffic">total:</string>
    <string name="current_sim1">sim1: %1$s</string>
    <string name="current_sim2">sim2: %1$s</string>
    <string name="today_traffic">today: %1$s</string>
    <string name="inpo_page_title">Information</string>
  • Save, Recompile
  • Decompile lagi
  • Buka public.xml dan jangan di tutup
  • Buka smali/com/android/systemui/statusbar/phone/PhoneStatusBar.smali
  • Ctrl+f .field private mSimIndicatorIconShow:Z, lalu tambahkan tepat di bawahnya :
.field private mInpoLayout:Landroid/view/View;  ---------> bebas mau apa, disini ane pake [Inpo], kalo blm paham ikutin aja dulu
  • Ctrl+f # instance fields, tambahkan tepat di bawahnya :
.field mStateDiagram:Lcom/android/systemui/statusbar/phone/SwitchLayout;
  • Ctrl+f  .method static synthetic access$800, lalu tambahkan tepat di atasnya :
.method static synthetic access$7100(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)Landroid/view/View;  ----------> inget accessnya
    .locals 1
    .parameter

    .prologue
    .line 22
    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mInpoLayout:Landroid/view/View;

    return-object v0
.end method
  • Ctrl+f # direct methods, tambahkan tepat di bawahnya :
.method private setupMAXDevSwitchLayout()V
    .locals 5

    .prologue
    .line 90
    iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

    invoke-virtual {v1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object v1

    const-string v2, "state_diagram"

    const-string v3, "id"

    iget-object v4, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mContext:Landroid/content/Context;

    invoke-virtual {v4}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v1, v2, v3, v4}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

    move-result v0

    .line 91
    .local v0, resIdStateDiagram:I
    iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mInpoLayout:Landroid/view/View;  --------> mInpoLayout (sesuai dengan di atas)
    invoke-virtual {v1, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;

    move-result-object v1

    check-cast v1, Lcom/android/systemui/statusbar/phone/SwitchLayout;

    iput-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStateDiagram:Lcom/android/systemui/statusbar/phone/SwitchLayout;

    .line 92
    iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStateDiagram:Lcom/android/systemui/statusbar/phone/SwitchLayout;

    invoke-virtual {v1}, Lcom/android/systemui/statusbar/phone/SwitchLayout;->startTask()V

    .line 93
    return-void
.end method
  • ctrl+f .method private setupStatusBarExpandedViewPager()V, lalu tambahkan line berikut di tempatnya (kalo bingung bisa compare dengan phonestatusbar.smali ane, download disini) :
iget-object v2, p0, Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;

    invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object v2

    const v3, 0x7f04004e <public type="layout" name="expanded_inpo"

    invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getLayout(I)Landroid/content/res/XmlResourceParser;

    move-result-object v2

    invoke-virtual {v1, v2, v4}, Landroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;)Landroid/view/View;

    move-result-object v2

    iput-object v2, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mInpoLayout:Landroid/view/View;   ------------> samain sama di atas (mInpoLayout)
  • Ctrl+f line di bawah ini
invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->resetUserSetupObserver()V
  • Lalu tambahkan tepat di bawahnya
invoke-direct/range {p0 .. p0}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->setupMAXDevSwitchLayout()V
  • Save
  • buka smali/com/android/systemui/statusbar/phone/SwitchLayout.smali, lalu ganti id publicnya dengan id public ente :
0x7f0b00f3    type="string" name="battery_history_days"
0x7f0b00f4    type="string" name="battery_history_hours"
0x7f0b00f5    type="string" name="battery_history_minutes"
0x7f0b00f6    type="string" name="battery_history_seconds"
  • buka smali/com/android/systemui/statusbar/phone/SwitchLayout$DotLineView.smali, lalu ganti id publicnya dengan id public ente :
0x7f0b00f1    type="string" name="unkown_label"
0x7f0b00eb    type="string" name="cpu_label"
0x7f0b00ec    type="string" name="memory_label"
0x7f0b00ef    type="string" name="signal_label"
0x7f0b00f0    type="string" name="battery_label"
0x7f0b00ed    type="string" name="traffic_label"
0x7f0b00ee    type="string" name="traffic_label_sim2"
  • buka smali/com/android/systemui/statusbar/phone/SwitchLayout$SwitchView.smali, lalu ganti id publicnya dengan id public ente :
0x7f0b00f7    type="string" name="battery_stats_on_battery"
0x7f0b00f8    type="string" name="current"                         (ada 2x ID)
0x7f0b00f9     type="string" name="current_rate"                (ada 2x ID)
0x7f0b00f2    type="string" name="total_traffic"                  (ada 3x ID)
0x7f0b00fb    type="string" name="current_sim1"
0x7f0b00fc    type="string" name="current_sim2"
0x7f0b00fd    type="string" name="today_traffic"                (ada 2x ID)
  • Save, buka smali/com/android/systemui/statusbar/phone/PhoneStatusBar$ExpandedPagerAdapter.smali
  • ctrl+f .method public getPageTitle(I)Ljava/lang/CharSequence; , perhatikan line :pswitch_data_0 , lalu tambahkan line berikut tepat di atas :pswitch_data_0:
:pswitch_3
    iget-object v2, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$ExpandedPagerAdapter;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;

    #getter for: Lcom/android/systemui/SystemUI;->mContext:Landroid/content/Context;
    invoke-static {v2}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$6400(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)Landroid/content/Context;

    move-result-object v2

    invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

    move-result-object v2

    const v3, 0x7f0b0147  <public type="string" name="inpo_page_title"

    invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v2, v0}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;

    move-result-object v1

    goto :goto_0
  • Masih di method yg sama, perhatikan line .end packed-switch , lalu tambahkan line berikut tepat di atasnya :pswitch_3
  • ctrl+f .method public instantiateItem(Landroid/view/View;I)Ljava/lang/Object;, lalu perhatika line nop yang pertama (ada beberapa line nop), lalu tambahkan line berikut tepat di atas line nop :
:pswitch_3
    iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$ExpandedPagerAdapter;->this$0:Lcom/android/systemui/statusbar/phone/PhoneStatusBar;

    #getter for: Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mInpoLayout:Landroid/view/View;  --------> perhatikan mInpoLayout, sesuaikan juga dengan phonestausbar.smali
    invoke-static {v1}, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->access$7100(Lcom/android/systemui/statusbar/phone/PhoneStatusBar;)Landroid/view/View;  ------> perhatikan access sesuaikan accessnya dengan di phonestatusbar.smali

    move-result-object v0

    goto :goto_0
  • Masih perhatikan line nop, tambahkan line nop lagi, jadi total ada 5 line nop
  • Masih di method yg sama, perhatikan line .end packed-switch , lalu tambahkan line berikut tepat di atasnya :pswitch_3
  • ctrl+f .method public getCount()I, disana ada line 0x3, lalu rubah jadi 0x4
  • Kalo bingung bisa compare dengan PhoneStatusBar$ExpandedPagerAdapter.smali ane,Download disini
  • Save
  • Recompile
  • Done
  • Jadi deh ada 4 page view pager hehe

 SS :

Thanks to :
Om No More
Om Adi Sukahadi
Om Abdusy
You

15 komentar

nice share um...boleh req bkin color assent gk,,

belum paham betul um, kalo udh pasti ane share kok hehe

ini kalo diambil layout nya aja bisa gk om jd layout diagram ini di include di layout biasa bisa gk om ? soalnya gk bisa bikin view pager

Di tunggu um share nya ;-)

bisa um, ambil metod sama beberapa line yg ada kata diagram aja, sama jangan lupa filenya juga :-)

eror yerus om mungkin salah pengambilan bahanya bisa gk om request layout diagram nya aja nubi om bingung compare nya device ane jb 4.1 qualcom
thnks om di tunggu diagramnya :-)

ambil aja tutor di atas cuma dengan sedikit modifikasi linenya pastinya um hehe

loh kan di atas tinggal di masukin flashable zip um

Gan bahannya gak bisa di download

GUIDE diagram tanpa tambah page gimna yaa om Bagus

Tutor nambahin diagramnya aja om

Minta tutor buat nambahim diagramnya doang pak ??
Dah banyak yg reques tuh kya'y..

Um pnya ane tab k 4 nya klo d swip kdang" fc um. Cra ngfixnya gmna um

Thanks guidenya gan work pada samsung grand 2

Berkomentarlah yang baik, tidak mencela postingan :-) . Gunakan bahasa yang sopan dan mudah di mengerti.

TERIMA KASIH TELAH BERKOMENTAR, karena pengunjung yang baik adalah pengunjung yang berkomentar :-) :v
EmoticonEmoticon