【开发者教程】应用程序列表背景透明|Sense5

文章目录

前言:
大家好,从今天开始现实的你我都将会把HTC ONE\M7 SENSE5系列的教程公布出来,供大家学习参考,共同提升。如有不详细之处,请大神指导。。。(非常感谢现实的你我分享的教程!原帖:http://lt.imobile.com.cn/thread-10343220-1-1.html)

直接开场(这里所使用的工具、修改方法等基础性的请自行百度)


效果图:

Screenshot_2013-05-08-11-07-30.jpg

我们这节讲解如何让HTC ONE\M7 那漆黑一片的应用程序背景透明而实现和手机壁纸共用背景的效果呢?


一、反编译Prism.apk

1、我们首先找到/smali/com/htc/launcher/Launcher.Smali这个文件用Notepad++打开

并找到下面函数,然后删除这段语句:

.method public updateWallpaperVisibility(Z)V    
.locals 8

    const/4 v3, 0x0
    
const/high16 v2, 0x10

    iget-boolean v4, p0, 
Lcom/htc/launcher/Launcher;->m_bAttached:Z

    if-nez 
v4, :cond_1

    const-string v2, 
“Launcher”

    const-string v3, “updateWallpaperVisibility 
– not attached”

    invoke-static {v2, v3}, 
Lcom/htc/launcher/util/Logger;->d(Ljava/lang/String;Ljava/lang/String;)V
    
:cond_0
    :goto_0
    
return-void
    :cond_1
    
invoke-virtual {p0}, 
Lcom/htc/launcher/Launcher;->isAddToHomeVisible()Z
    
move-result v4

    if-eqz v4, 
:cond_2

    const/4 p1, 0x1
    
:cond_2
    if-eqz p1, :cond_3

    move 
v1, v2

    :goto_1
    invoke-virtual 
{p0}, 
Lcom/htc/launcher/Launcher;->getWindow()Landroid/view/Window;
    
move-result-object v4

    invoke-virtual {v4}, 
Landroid/view/Window;->getAttributes()Landroid/view/WindowManager$LayoutParams;
    
move-result-object v4

    iget v4, v4, 
Landroid/view/WindowManager$LayoutParams;->flags:I
    
and-int v0, v4, v2

    if-eq v1, v0, 
:cond_0

    const-string v4, 
“Launcher”

    const-string v5, 
“updateWallpaperVisibility: %s”

    const/4 v6, 
0x1

    new-array v6, v6, 
[Ljava/lang/Object;

    invoke-static {p1}, 
Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
    
move-result-object v7

    aput-object v7, v6, 
v3

    invoke-static {v4, v5, v6}, 
Lcom/htc/launcher/util/Logger;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
    
invoke-virtual {p0}, 
Lcom/htc/launcher/Launcher;->getWindow()Landroid/view/Window;
    
move-result-object v3

    invoke-virtual {v3, v1, v2}, 
Landroid/view/Window;->setFlags(II)V

    goto 
:goto_0

    :cond_3
    move v1, 
v3
    goto :goto_1
.end method

2、然后我们继续使用Notepad++强大的文本搜索功能搜索下面这个文本

updateWallpaperVisibility

会出现很多包含上面文本的语句,比如:

invoke-virtual {v0, v4}, 
Lcom/htc/launcher/Launcher;->updateWallpaperVisibility(Z)V

此类的句子,直接整句,貌似有四个文件里包含此类文本,全部整句删除。

3、删除以上后,我们进入/smali/com/htc/launcher/DragLayer.Smali

找到这段

.method public constructor 
<init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
    
.locals 5

    const/4 v4, 0x0
    
const/4 v3, 0x0

    invoke-direct {p0, p1, p2}, 
Landroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
    
const/4 v1, 0x2

    new-array v1, v1, 
[I

    iput-object v1, p0, 
Lcom/htc/launcher/DragLayer;->m_naTmpXY:[I
    
new-instance v1, Ljava/util/ArrayList;

    invoke-direct 
{v1}, Ljava/util/ArrayList;-><init>()V
    
iput-object v1, p0, 
Lcom/htc/launcher/DragLayer;->m_resizeFrames:Ljava/util/ArrayList;
    
iput-object v3, p0, 
Lcom/htc/launcher/DragLayer;->m_dropAnim:Landroid/animation/ValueAnimator;
    
iput-object v3, p0, 
Lcom/htc/launcher/DragLayer;->m_fadeOutAnim:Landroid/animation/ValueAnimator;
    
new-instance v1, 
Landroid/view/animation/DecelerateInterpolator;
    
const/high16 v2, 0x3fc0

    invoke-direct {v1, v2}, 
Landroid/view/animation/DecelerateInterpolator;-><init>(F)V
    
iput-object v1, p0, 
Lcom/htc/launcher/DragLayer;->m_cubicEaseOutInterpolator:Landroid/animation/TimeInterpolator;
    
iput-object v3, p0, 
Lcom/htc/launcher/DragLayer;->m_dropView:Lcom/htc/launcher/DragView;
    
iput v4, p0, 
Lcom/htc/launcher/DragLayer;->m_nAnchorViewInitialScrollX:I
     
iput-object v3, p0, 
Lcom/htc/launcher/DragLayer;->m_anchorView:Landroid/view/View;
    
iput-boolean v4, p0, 
Lcom/htc/launcher/DragLayer;->m_bHoverPointClosesFolder:Z
    
new-instance v1, Landroid/graphics/Rect;

    invoke-direct 
{v1}, Landroid/graphics/Rect;-><init>()V
    
iput-object v1, p0, 
Lcom/htc/launcher/DragLayer;->m_rectHit:Landroid/graphics/Rect;
    
const/4 v1, 0x1

    iput-boolean v1, p0, 
Lcom/htc/launcher/DragLayer;->m_bHotseatVisible:Z
    
const/high16 v1, 0x3f80

    iput v1, p0, 
Lcom/htc/launcher/DragLayer;->m_fBackgroundAlpha:F
    
new-instance v1, Landroid/graphics/Rect;

    invoke-direct 
{v1}, Landroid/graphics/Rect;-><init>()V
    
iput-object v1, p0, 
Lcom/htc/launcher/DragLayer;->m_rectBackground:Landroid/graphics/Rect;
    
new-instance v0, 
Lcom/htc/launcher/FillColorFastBitmapDrawable;
    
invoke-virtual {p1}, 
Landroid/content/Context;->getResources()Landroid/content/res/Resources;
    
move-result-object v1

    const v2, 
0x7f020002

    invoke-virtual {v1, v2}, 
Landroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable;
    
move-result-object v1

    check-cast v1, 
Landroid/graphics/drawable/BitmapDrawable;
    
invoke-virtual {v1}, 
Landroid/graphics/drawable/BitmapDrawable;->getBitmap()Landroid/graphics/Bitmap;
    
move-result-object v1

    const/high16 v2, 
-0x100

    invoke-direct {v0, v1, v2}, 
Lcom/htc/launcher/FillColorFastBitmapDrawable;-><init>(Landroid/graphics/Bitmap;I)V
    
invoke-virtual {p0, v0}, 
Lcom/htc/launcher/DragLayer;->setBackground(Landroid/graphics/drawable/Drawable;)V
    
invoke-virtual {p0, v4}, 
Lcom/htc/launcher/DragLayer;->setMotionEventSplittingEnabled(Z)V
    
return-void
.end method

把里面这句

  const/high16 v2, -0x100

修改为

const/high16 v2, 0x0   

至此,我们smali文件的修改结束了

4、接下来我么修改布局文件
res/layout/all_apps_pagedview.xml

里查找

<com.htc.launcher.pageview.AllAppsPagedView 
android:id=”@id/all_apps_paged_view”

改为

<com.htc.launcher.pageview.AllAppsPagedView 
android:background=”@drawable/icon_background” 
android:id=”@id/all_apps_paged_view”

然后我们制作一个icon_background.png的透明背景图片放入drawable-xxhdpi里

然后在\res\values\public.xml标明其ID即可

同时

修改home_expanded_panel.9.png为透明

修改automotive_common_app_bkg_top.png为透明

修改home_folder_base.png为透明


二、回编译
三、替换原文件给予相应权限
四、在这声明一下,这个文件如果修改不成功也可能假性回编成功,但是影响的就是你的机器开机后卡第一屏进不了桌面
所以在这里修改最好自己制作一个回刷的正常的包含Prism.apk文件的补丁包
,以防不测用以恢复。M7如果开机卡第一屏进不去桌面也不用慌张,直接长按电源键,看着下面的两个灯闪15下左右就会关机,此时按下音量下键就可以直接进入RECOVERY界面。。。

透明图片下载:

透明图片

原文链接:,转发请注明来源!