[MOD][PORT][UPDATED 04/20/14] IME (Keyboard) Animations

Search This thread

syaeful

Senior Member
Jul 31, 2013
130
87
Purbalingga
Nice sir.. :good:
question ; do i need to equate public id in new smali with the framework-res sir?
If yes, may I ask the public id your framework-res for compare?
because in the guide are not included, so it make me confused :(
 

Top Liked Posts

  • There are no posts matching your filters.
  • 9
    Hi guys,
    I would like to share a Mod/Animations that I ported from PAC man ROM.. This will enable a IME(Keyboard) Animations and you will be able to test them and change them on the fly!!

    What exatcly does this mod do?

    • This mod will enable your keyboard to have all different types of Enter and Exit Animations, along with different animations for the Interpolator and speed of the animation..
    • Here is a video of what I mean..


    I started looking into this bc I thought it was a pretty cool feature. I want to remind you that this is NOT my work. I DID NOT create these animations..All I did was port them over to TW 4.3 to make them work:laugh:
    Anyone is able to use this mod, just please give proper credit to Devs of PAC Man ROM & Xylon ROM, @zst123 for open source XUI MOD Xposed Module and me if you want ;)

    ALSO I want to give a BIG THANKS to:
    @dwitherell - for always being there to help and for a sounding bored (LOLLL)
    @Deckoz2302 - you already know
    @Stryke_the_Orc - logcat thread and a 2nd eye
    And too everyone else whos guides I've used to teach me and all the things I know now and am planning to learn along the way

    WARNING!!! THIS IS GUIDE IS NOT FOR NOVICE USERS/MODDERS/THEMERS ETC...THERE ARE A LOT OF EDITS IN RES FOLDERS AND SMALI!! IF YOU GET STOCK PLEASE PLEASE POST A LOG OR THE ERROR! I WILL TRY TO BE AS NOOB FRIENDLY AS POSSIBLE BUT THIS IS NOT A NOOB GUIDE/MOD!

    PS:This guide may not be PERFECT.. There maybe somethings that I added that this mod may not need..or use.. But i added them for the sake of not missing anything..So if you see something and are like "Why did he add those ids, strings, layouts etc" WHATEVER..Just ignore it or don't use them.. I will try to be as accurate as possible.

    So let's begin..
    What you'll need:

    Note Pad++
    1. Apktool and knowledge on how to read errors
    2. framework-res.apk
    3. SecSettings.apk
    4. framework.jar
    5. PATIENCE


    Let's start with SecSettings, decompile it goto res/values..

    strings.xml add these:
    Code:
    <string name="listview_off">Off</string>
        <string name="listview_wave_left">Wave (Left)</string>
        <string name="listview_wave_right">Wave (Right)</string>
        <string name="listview_alpha">Alpha</string>
        <string name="listview_scale">Scale</string>
        <string name="listview_stack_top">Stack (Top)</string>
        <string name="listview_stack_bottom">Stack (Bottom)</string>
        <string name="listview_unfold">Unfold</string>
        <string name="listview_fold">Fold</string>
        <string name="listview_translate_left">Translate (Left)</string>
        <string name="listview_translate_right">Translate (Right)</string>
        <string name="listview_accelerate_interpolator">Accelerate</string>
        <string name="listview_decelerate_interpolator">Decelerate</string>
        <string name="listview_accelerate_decelerate_interpolator">Accelerate/Decelerate</string>
        <string name="listview_anticipate_interpolator">Anticipate</string>
        <string name="listview_overshoot_interpolator">Overshoot</string>
        <string name="listview_anticipate_overshoot_interpolator">Anticipate/Overshoot</string>
        <string name="listview_bounce_interpolator">Bounce</string>
        <string name="listview_cycle_interpolator">Cycle</string>
        <string name="listview_linear_interpolator">Linear</string>
        <string name="animation_default">Default</string>
        <string name="animation_fade">Fade</string>
        <string name="animation_slide_right">Slide in right</string>
        <string name="animation_slide_left">Slide in left</string>
        <string name="animation_slide_right_no_fade">Slide in right (No fade)</string>
        <string name="animation_slide_left_no_fade">Slide in left (No fade)</string>
        <string name="animation_slide_up">Slide in bottom</string>
        <string name="animation_slide_down">Slide in top</string>
        <string name="animation_translucent">Translucent</string>
        <string name="animation_grow_shrink">Grow in (Top)</string>
        <string name="animation_grow_shrink_center">Grow in (Center)</string>
        <string name="animation_grow_shrink_bottom">Grow in (Bottom)</string>
        <string name="animation_grow_shrink_left">Grow in (Left)</string>
        <string name="animation_grow_shrink_right">Grow in (Right)</string>
        <string name="ime_animation_title">IME animations</string>
        <string name="ime_animation_summary">Set keyboard animations</string>
        <string name="ime_animation_test_title">Test IME Animation Here</string>
        <string name="ime_enter_animation_title">Enter Animation</string>
        <string name="ime_exit_animation_title">Exit Animation</string>
        <string name="ime_interpolator_title">Interpolator</string>
        <string name="ime_duration_title">IME Duration</string>
        <string name="animation_duration_title">Animation duration</string>
        <string name="animation_duration_summary">Set duration</string>
        <string name="animation_settings_reset_message">Reset all animation settings to default?</string>
    Save..

    ids.xml add these:
    Code:
    <item type="id" name="seekBarPrefUnitsRight">false</item>
        <item type="id" name="seekBarPrefValue">false</item>
        <item type="id" name="seekBarPrefUnitsLeft">false</item>
        <item type="id" name="seekBarPrefBarContainer">false</item>
    Save..

    arrays.xml add these:
    Code:
    <string-array name="listview_animation_entries">
            <item [user=251364]@Str[/user]ing/listview_off</item>
            <item [user=251364]@Str[/user]ing/listview_wave_left</item>
            <item [user=251364]@Str[/user]ing/listview_wave_right</item>
            <item [user=251364]@Str[/user]ing/listview_scale</item>
            <item [user=251364]@Str[/user]ing/listview_alpha</item>
            <item [user=251364]@Str[/user]ing/listview_stack_top</item>
            <item [user=251364]@Str[/user]ing/listview_stack_bottom</item>
            <item [user=251364]@Str[/user]ing/listview_unfold</item>
            <item [user=251364]@Str[/user]ing/listview_fold</item>
            <item [user=251364]@Str[/user]ing/listview_translate_left</item>
            <item [user=251364]@Str[/user]ing/listview_translate_right</item>
        </string-array>
        <string-array name="listview_animation_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
            <item>5</item>
            <item>6</item>
            <item>7</item>
            <item>8</item>
            <item>9</item>
            <item>10</item>
        </string-array>
        <string-array name="listview_interpolator_entries">
            <item [user=251364]@Str[/user]ing/listview_off</item>
            <item [user=251364]@Str[/user]ing/listview_accelerate_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_decelerate_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_accelerate_decelerate_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_anticipate_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_overshoot_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_anticipate_overshoot_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_bounce_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_cycle_interpolator</item>
            <item [user=251364]@Str[/user]ing/listview_linear_interpolator</item>
        </string-array>
        <string-array name="listview_interpolator_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
            <item>5</item>
            <item>6</item>
            <item>7</item>
            <item>8</item>
            <item>9</item>
        </string-array>
        <string-array name="anim_controls_entries">
            <item [user=251364]@Str[/user]ing/animation_default</item>
            <item [user=251364]@Str[/user]ing/animation_fade</item>
            <item [user=251364]@Str[/user]ing/animation_slide_right</item>
            <item [user=251364]@Str[/user]ing/animation_slide_left</item>
            <item [user=251364]@Str[/user]ing/animation_slide_right_no_fade</item>
            <item [user=251364]@Str[/user]ing/animation_slide_left_no_fade</item>
            <item [user=251364]@Str[/user]ing/animation_slide_up</item>
            <item [user=251364]@Str[/user]ing/animation_slide_down</item>
            <item [user=251364]@Str[/user]ing/animation_translucent</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_center</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_bottom</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_left</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_right</item>
        </string-array>
        <string-array name="anim_controls_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
            <item>5</item>
            <item>6</item>
            <item>7</item>
            <item>8</item>
            <item>9</item>
            <item>10</item>
            <item>11</item>
            <item>12</item>
            <item>13</item>
        </string-array>
    Save..

    attrs.xml add these:
    Code:
     <attr name="interval" format="integer" />
        <attr name="unitsLeft" format="reference|string" />
        <attr name="unitsRight" format="reference|string" />
        <attr name="maximum" format="integer" />
        <attr name="minimum" format="integer" />
    Save..

    Now go to res/xml/ and where ever you want to add the preference screen to change the animations.. I added it to a xml that we (N3bula) have specifically for keyboard mods..Add this line
    Code:
    <PreferenceScreen android:title= [user=251364]@Str[/user]ing/ime_animation_title" android:key="interface_animation_scroll" android:summary= [user=251364]@Str[/user]ing/ime_animation_summary" android:fragment="com.android.settings.pac.KeyboardAnimationInterfaceSettings" />

    Goto android/settings/SubSettings.smali
    Search
    Code:
    .method public constructor
    add this below .end method
    Code:
    .method private popFragment()Z
        .locals 2
    
        .prologue
        .line 46
        invoke-virtual {p0}, Lcom/android/settings/SubSettings;->getFragmentManager()Landroid/app/FragmentManager;
    
        move-result-object v0
    
        .line 47
        .local v0, "fm":Landroid/app/FragmentManager;
        invoke-virtual {v0}, Landroid/app/FragmentManager;->getBackStackEntryCount()I
    
        move-result v1
    
        if-lez v1, :cond_0
    
        .line 48
        invoke-virtual {v0}, Landroid/app/FragmentManager;->popBackStack()V
    
        .line 49
        const/4 v1, 0x1
    
        .line 51
        :goto_0
        return v1
    
        :cond_0
        const/4 v1, 0x0
    
        goto :goto_0
    .end method

    Then search
    Code:
    # virtual methods
    Add this below it:
    Code:
    .method protected isValidFragment(Ljava/lang/String;)Z
        .locals 3
        .param p1, "fragmentName"    # Ljava/lang/String;
    
        .prologue
        .line 41
        const-string v0, "SubSettings"
    
        new-instance v1, Ljava/lang/StringBuilder;
    
        invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
    
        const-string v2, "Launching fragment "
    
        invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        move-result-object v1
    
        invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
        move-result-object v1
    
        invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    
        move-result-object v1
    
        invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
    
        .line 42
        const/4 v0, 0x1
    
        return v0
    .end method

    Find
    Code:
    .method public onNavigateUp()Z
    Add blue:
    Code:
    .method public onNavigateUp()Z
        .locals 1
    
        .prologue
        .line 27
        [COLOR="Blue"]invoke-direct {p0}, Lcom/android/settings/SubSettings;->popFragment()Z
    
        move-result v0
    
        if-nez v0, :cond_0
    [/COLOR]
        invoke-virtual {p0}, Lcom/android/settings/SubSettings;->finish()V
    
        .line 28
        [COLOR="blue"]:cond_0[/COLOR]
        const/4 v0, 0x1
    
        return v0
    .end method

    Now extract the zip below and add all the contents to their respected folders..
    SecSettings.zip
    Once you have them in place compile the apk, then decompile it so you can pull your new public id's in res/values/public.xml

    Here is my public.xml please go through all the smali you added and search for all the 0x7******* (public ids) When you find one search my public.xml for it, find the name, then search your NEW public.xml for that name and id. Then change the id to YOUR NEW ONE. (Please if you don't understand how to do this, then this mod is NOT for you..either that or you need to search and find out what I am talking about. I will not post every id with the name bc there are A LOT)

    Now moving on, framework-res.apk, decompile it...go to res/arrays add these..
    Code:
    <string-array name="anim_controls_entries">
            <item [user=251364]@Str[/user]ing/animation_default</item>
            <item [user=251364]@Str[/user]ing/animation_fade</item>
            <item [user=251364]@Str[/user]ing/animation_slide_right</item>
            <item [user=251364]@Str[/user]ing/animation_slide_left</item>
            <item [user=251364]@Str[/user]ing/animation_slide_right_no_fade</item>
            <item [user=251364]@Str[/user]ing/animation_slide_left_no_fade</item>
            <item [user=251364]@Str[/user]ing/animation_slide_up</item>
            <item [user=251364]@Str[/user]ing/animation_slide_down</item>
            <item [user=251364]@Str[/user]ing/animation_translucent</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_center</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_bottom</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_left</item>
            <item [user=251364]@Str[/user]ing/animation_grow_shrink_right</item>
        </string-array>
        <string-array name="anim_controls_values">
            <item>0</item>
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
            <item>5</item>
            <item>6</item>
            <item>7</item>
            <item>8</item>
            <item>9</item>
            <item>10</item>
            <item>11</item>
            <item>12</item>
            <item>13</item>
        </string-array>
    Save..

    Then go to res/strings.xml add these:
    Code:
    <string name="animation_fade">Fade</string>
        <string name="animation_slide_right">Slide in right</string>
        <string name="animation_slide_left">Slide in left</string>
        <string name="animation_slide_right_no_fade">Slide in right (No fade)</string>
        <string name="animation_slide_left_no_fade">Slide in left (No fade)</string>
        <string name="animation_slide_up">Slide in bottom</string>
        <string name="animation_slide_down">Slide in top</string>
        <string name="animation_default">Default</string>
        <string name="animation_translucent">Translucent</string>
        <string name="animation_grow_shrink">Grow in (Top)</string>
        <string name="animation_grow_shrink_center">Grow in (Center)</string>
        <string name="animation_grow_shrink_bottom">Grow in (Bottom)</string>
        <string name="animation_grow_shrink_left">Grow in (Left)</string>
        <string name="animation_grow_shrink_right">Grow in (Right)</string>
        <string name="action_null">Blank</string>
    Save..

    Now extract the zip below and add them in their respected folder(s)..
    framework-res.zip

    Compile it and then decompile it, you will need to generate a new public.xml for framework.jar which is the next step..

    Goto POST#5
    5
    Now framework.jar..goto android\inputservices\InputMethodSevices.smali..
    Now search
    Code:
    # annotations
    add blue:
    Code:
    .annotation system Ldalvik/annotation/MemberClasses;
        value = {
            Landroid/inputmethodservice/InputMethodService$Insets;,
            Landroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;,
            Landroid/inputmethodservice/InputMethodService$InputMethodImpl;,
           [COLOR="Blue"] Landroid/inputmethodservice/InputMethodService$SettingsObserver;[/COLOR]
        }
    .end annotation

    Search
    Code:
    # instance fields
    add these below
    Code:
    .field private mAnimationDuration:I
    .field private mAnimationEnterIndex:I
    .field private mAnimationExitIndex:I
    .field mHandler:Landroid/os/Handler;
    .field private mInterpolatorIndex:I
    .field private mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver;
    .field private mWindowIme:Landroid/view/Window;

    Now search
    Code:
    .method static synthetic
    add this whole .method
    Code:
    .method static synthetic access$123(Landroid/inputmethodservice/InputMethodService;)V
        .locals 0
        .param p0, "x0"    # Landroid/inputmethodservice/InputMethodService;
    
        .prologue
        .line 232
        invoke-direct {p0}, Landroid/inputmethodservice/InputMethodService;->updateSettings()V
    
        return-void
    .end method

    Now search
    Code:
    .method private sendInputViewShownState()V
    Add this above it:
    Code:
    .method private retrieveAnimation(Z)Landroid/view/animation/Animation;
        .locals 6
        .param p1, "enter"    # Z
    
        .prologue
        .line 1709
        if-eqz p1, :cond_1
    
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationEnterIndex:I
    
        :goto_0
        invoke-static {v4}, Lcom/android/internal/util/aokp/AwesomeAnimationHelper;->getAnimations(I)[I
    
        move-result-object v1
    
        .line 1710
        .local v1, "animArray":[I
        if-eqz p1, :cond_2
    
        const/4 v4, 0x1
    
        aget v2, v1, v4
    
        .line 1711
        .local v2, "animInt":I
        :goto_1
        if-nez v2, :cond_3
    
        const/4 v0, 0x0
    
        .line 1718
        :cond_0
        :goto_2
        return-object v0
    
        .line 1709
        .end local v1    # "animArray":[I
        .end local v2    # "animInt":I
        :cond_1
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationExitIndex:I
    
        goto :goto_0
    
        .line 1710
        .restart local v1    # "animArray":[I
        :cond_2
        const/4 v4, 0x0
    
        aget v2, v1, v4
    
        goto :goto_1
    
        .line 1712
        .restart local v2    # "animInt":I
        :cond_3
        invoke-static {p0, v2}, Landroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;
    
        move-result-object v0
    
        .line 1713
        .local v0, "anim":Landroid/view/animation/Animation;
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mInterpolatorIndex:I
    
        invoke-static {p0, v4}, Lcom/android/internal/util/aokp/AwesomeAnimationHelper;->getInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;
    
        move-result-object v3
    
        .line 1714
        .local v3, "intplr":Landroid/view/animation/Interpolator;
        if-eqz v3, :cond_4
    
        invoke-virtual {v0, v3}, Landroid/view/animation/Animation;->setInterpolator(Landroid/view/animation/Interpolator;)V
    
        .line 1715
        :cond_4
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
    
        if-lez v4, :cond_0
    
        .line 1716
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
    
        int-to-long v4, v4
    
        invoke-virtual {v0, v4, v5}, Landroid/view/animation/Animation;->setDuration(J)V
    
        goto :goto_2
    .end method

    Next search:
    Code:
    # virtual methods
    .method doFinishInput()V

    Add this above it:
    Code:
    .method private updateSettings()V
        .locals 4
    
        .prologue
        const/4 v3, 0x0
    
        .line 413
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
    
        move-result-object v1
    
        const-string v2, "animation_ime_enter"
    
        invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
        move-result v1
    
        iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationEnterIndex:I
    
        .line 415
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
    
        move-result-object v1
    
        const-string v2, "animation_ime_exit"
    
        invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
        move-result v1
    
        iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationExitIndex:I
    
        .line 417
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
    
        move-result-object v1
    
        const-string v2, "animation_ime_interpolator"
    
        invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
        move-result v1
    
        iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mInterpolatorIndex:I
    
        .line 419
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;
    
        move-result-object v1
    
        const-string v2, "animation_ime_duration"
    
        invoke-static {v1, v2, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
        move-result v0
    
        .line 421
        .local v0, "temp":I
        mul-int/lit8 v1, v0, 0xf
    
        iput v1, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
    
        .line 422
        return-void
    .end method

    Now search
    Code:
    .method initViews()V

    Add whats is in blue:
    Code:
    sget-object v0, Landroid/R$styleable;->InputMethodService:[I
    
        invoke-virtual {p0, v0}, Landroid/inputmethodservice/InputMethodService;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
    
        move-result-object v0
    
        iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mThemeAttrs:Landroid/content/res/TypedArray;
    
        .line 1082
        iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mInflater:Landroid/view/LayoutInflater;
    
        const v1, 0x1090063
    
        invoke-virtual {v0, v1, v3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
    
        move-result-object v0
    
        iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        .line 776
        [COLOR="Blue"]iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        const/16 v1, 0x300
    
        invoke-virtual {v0, v1}, Landroid/view/View;->setSystemUiVisibility(I)V[/COLOR]
    
        .line 778
        iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
    
        iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        invoke-virtual {v0, v1}, Landroid/inputmethodservice/SoftInputWindow;->setContentView(Landroid/view/View;)V
    
        .line 1085
        iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        invoke-virtual {v0}, Landroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver;

    Next search:
    Code:
    const-string v1, "fancy_ime_animations"
    should be just a few lines down
    Add blue

    Code:
    const-string v1, "fancy_ime_animations"
    
        invoke-static {v0, v1, v2}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
        move-result v0
    
        if-eqz v0, :cond_0
    
        .line 782
        [COLOR="blue"]iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
    
        invoke-virtual {v0}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
    
        move-result-object v0
    
        const v1, 0x1030201
    
        invoke-virtual {v0, v1}, Landroid/view/Window;->setWindowAnimations(I)V
    [/COLOR]
        .line 785
        :cond_0
        iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        const v1, 0x1020351
    
        invoke-virtual {v0, v1}, Landroid/view/View;->findViewById(I)Landroid/view/View;
    
        move-result-object v0
    
        check-cast v0, Landroid/view/ViewGroup;

    Search
    Code:
    const-string v0, "KOR"

    Add blue above like this:

    Code:
    invoke-virtual {v0, v4}, Landroid/widget/FrameLayout;->setVisibility(I)V
    
        [COLOR="blue"]new-instance v0, Landroid/os/Handler;
    
        invoke-direct {v0}, Landroid/os/Handler;-><init>()V
    
        iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mHandler:Landroid/os/Handler;[/COLOR]
    
        .line 1113
        const-string v0, "KOR"
    
        const-string v1, "USA"

    NOW search
    Code:
    .method public onCreate()V
    Add blue:

    Code:
    invoke-virtual {v1}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
    
        move-result-object v1
    
        const/high16 v2, 0x1000000
    
        invoke-virtual {v1, v2}, Landroid/view/Window;->addFlags(I)V
    
        .line 1003
        :cond_0
       [COLOR="blue"] new-instance v0, Landroid/os/Handler;
    
        invoke-direct {v0}, Landroid/os/Handler;-><init>()V
    
        iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mHandler:Landroid/os/Handler;
    
        .line 742
        new-instance v0, Landroid/inputmethodservice/InputMethodService$SettingsObserver;
    
        iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mHandler:Landroid/os/Handler;
    
        invoke-direct {v0, p0, v1}, Landroid/inputmethodservice/InputMethodService$SettingsObserver;-><init>(Landroid/inputmethodservice/InputMethodService;Landroid/os/Handler;)V
    
        iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver;
    
        .line 743
        iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver;
    
        invoke-virtual {v0}, Landroid/inputmethodservice/InputMethodService$SettingsObserver;->observe()V[/COLOR]
    
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->initViews()V
    
        .line 1004
        iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
    
        invoke-virtual {v1}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
    
        move-result-object v1
    
        const/4 v2, -0x1
    
        const/4 v3, -0x2
    
        invoke-virtual {v1, v2, v3}, Landroid/view/Window;->setLayout(II)V
    
        .line 1016
       [COLOR="blue"] iget-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
    
        invoke-virtual {v0}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
    
        move-result-object v0
    
        iput-object v0, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
    
        .line 747
        invoke-direct {p0}, Landroid/inputmethodservice/InputMethodService;->updateSettings()V[/COLOR]
    
        new-instance v0, Landroid/content/IntentFilter;
    
        invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
    
        .line 1017
        .local v0, "filter":Landroid/content/IntentFilter;
        const-string v1, "RequestAxT9Info"
    
        invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
    
        .line 1018
        const-string v1, "com.samsung.axt9info.close"
    
        invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
    
        .line 1023
        iget-object v1, p0, Landroid/inputmethodservice/InputMethodService;->mBR:Landroid/content/BroadcastReceiver;
    
        invoke-virtual {p0, v1, v0}, Landroid/inputmethodservice/InputMethodService;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
    
        .line 1024
        const-string v1, "InputMethodService"
    
        const-string v2, "mBR.registerReceiver()"
    
        invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
    
        .line 1054
        return-void
    .end method

    Search
    Code:
    .method public onWindowHidden()V
    Replace whole method with this:
    Code:
    .method public onWindowHidden()V
        .locals 6
    
        .prologue
        .line 1669
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationExitIndex:I
    
        if-nez v4, :cond_1
    
        .line 1670
        iget-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
    
        invoke-virtual {v4}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
    
        move-result-object v4
    
        const v5, 0x1030056
    
        invoke-virtual {v4, v5}, Landroid/view/Window;->setWindowAnimations(I)V
    
        .line 1706
        :cond_0
        :goto_0
        return-void
    
        .line 1673
        :cond_1
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getWindow()Landroid/app/Dialog;
    
        move-result-object v1
    
        .line 1674
        .local v1, "dialog":Landroid/app/Dialog;
        invoke-virtual {v1}, Landroid/app/Dialog;->getWindow()Landroid/view/Window;
    
        move-result-object v4
    
        iput-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
    
        .line 1675
        iget-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
    
        const/4 v5, -0x1
    
        invoke-virtual {v4, v5}, Landroid/view/Window;->setWindowAnimations(I)V
    
        .line 1677
        new-instance v2, Landroid/os/Handler;
    
        invoke-direct {v2}, Landroid/os/Handler;-><init>()V
    
        .line 1678
        .local v2, "handler":Landroid/os/Handler;
        new-instance v3, Landroid/inputmethodservice/InputMethodService$4;
    
        invoke-direct {v3, p0, v1}, Landroid/inputmethodservice/InputMethodService$4;-><init>(Landroid/inputmethodservice/InputMethodService;Landroid/app/Dialog;)V
    
        .line 1685
        .local v3, "runnable":Ljava/lang/Runnable;
        const/4 v4, 0x0
    
        invoke-direct {p0, v4}, Landroid/inputmethodservice/InputMethodService;->retrieveAnimation(Z)Landroid/view/animation/Animation;
    
        move-result-object v0
    
        .line 1686
        .local v0, "anim":Landroid/view/animation/Animation;
        if-eqz v0, :cond_0
    
        .line 1687
        new-instance v4, Landroid/inputmethodservice/InputMethodService$5;
    
        invoke-direct {v4, p0, v2, v3, v1}, Landroid/inputmethodservice/InputMethodService$5;-><init>(Landroid/inputmethodservice/InputMethodService;Landroid/os/Handler;Ljava/lang/Runnable;Landroid/app/Dialog;)V
    
        invoke-virtual {v0, v4}, Landroid/view/animation/Animation;->setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V
    
        .line 1698
        invoke-virtual {v1}, Landroid/app/Dialog;->show()V
    
        .line 1699
        iget-object v4, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        invoke-virtual {v4, v0}, Landroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
    
        .line 1700
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
    
        if-lez v4, :cond_2
    
        .line 1701
        iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationDuration:I
    
        mul-int/lit8 v4, v4, 0x2
    
        int-to-long v4, v4
    
        invoke-virtual {v2, v3, v4, v5}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
    
        goto :goto_0
    
        .line 1703
        :cond_2
        const-wide/16 v4, 0x3e8
    
        invoke-virtual {v2, v3, v4, v5}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
    
        goto :goto_0
    .end method

    Next search
    Code:
    .method public onWindowShown()V
    Replace whole method with this:
    Code:
    .method public onWindowShown()V
        .locals 4
    
        .prologue
        .line 1651
        iget v2, p0, Landroid/inputmethodservice/InputMethodService;->mAnimationEnterIndex:I
    
        if-nez v2, :cond_1
    
        .line 1652
        iget-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mWindow:Landroid/inputmethodservice/SoftInputWindow;
    
        invoke-virtual {v2}, Landroid/inputmethodservice/SoftInputWindow;->getWindow()Landroid/view/Window;
    
        move-result-object v2
    
        const v3, 0x1030056
    
        invoke-virtual {v2, v3}, Landroid/view/Window;->setWindowAnimations(I)V
    
        .line 1662
        :cond_0
        :goto_0
        return-void
    
        .line 1655
        :cond_1
        invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getWindow()Landroid/app/Dialog;
    
        move-result-object v1
    
        .line 1656
        .local v1, "dialog":Landroid/app/Dialog;
        invoke-virtual {v1}, Landroid/app/Dialog;->getWindow()Landroid/view/Window;
    
        move-result-object v2
    
        iput-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
    
        .line 1657
        iget-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mWindowIme:Landroid/view/Window;
    
        const/4 v3, -0x1
    
        invoke-virtual {v2, v3}, Landroid/view/Window;->setWindowAnimations(I)V
    
        .line 1658
        invoke-virtual {v1}, Landroid/app/Dialog;->show()V
    
        .line 1659
        const/4 v2, 0x1
    
        invoke-direct {p0, v2}, Landroid/inputmethodservice/InputMethodService;->retrieveAnimation(Z)Landroid/view/animation/Animation;
    
        move-result-object v0
    
        .line 1660
        .local v0, "anim":Landroid/view/animation/Animation;
        if-eqz v0, :cond_0
    
        .line 1661
        iget-object v2, p0, Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View;
    
        invoke-virtual {v2, v0}, Landroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
    
        goto :goto_0
    .end method


    Extract the zip and add them to their respected folder(s):
    framework.jar.zip

    After that YOUR DONE!!!
    Make sure you have compiled everything with YOUR NEW public ids.. Then go head and transfer/flash the files..

    REMINDER!! Please post a log/error if you are having problems. I will try to help as much as possible...:good:;)
    2
    Neat. Gonna try this when I have time to match all those ids (I see why you didn't list them all, thats gonna be alot lol)

    Sent from my Galaxy Note II

    Yep.. I guess I could have planned it better and wrote them all down.. But wasn't sure I could get it all working:rolleyes:
    1
    Neat. Gonna try this when I have time to match all those ids (I see why you didn't list them all, thats gonna be alot lol)

    Sent from my Galaxy Note II
    1
    Yep.. I guess I could have planned it better and wrote them all down.. But wasn't sure I could get it all working:rolleyes:

    Eff that dude. Doing tedious **** like that is how you learn. Let people work for it lol

    Sent from my Galaxy Note II