安卓activity背景透明

博客首页
android代码阅读器源码

现在的电子设备运行速度越来越快了,摩尔定律适用于硬件设备,同时也适用于软件对硬件的需求,在以前内存是按kb 计算的情况下,软件一样可以运行得很好,甚至是可以用来玩游戏(真不敢想象,现在4g的内存都得省着用)。
好了,言归正传,来说一说如何作出炫酷的背景透明activity。
先上一张效果图(这是昨天写博客用的图):

可以看到一个蓝色的弹出窗口用来选择文件,没错,蓝色圆角的部分是一个窗口,这是因为这个activity的背景 是透明的,所以边缘部分可以看到下面一层的activity(那是一个显示代码的activity,这个apk是用来做代码浏览器 的,代码高亮是必须的)。

下面就来说一说怎么把activity背景做透明吧:
直接上代码吧,第一个是style文件,其中上面的style是activity的style,应该在manifests文件中对应的activity声明中 用theme方式引用,下面的style是蓝色圆角的listview用来选择文件,其中设置了margin,这就可以让它和activity 的边缘隔出一段距离来显示出下面那层activity了。

<!--this is style file-->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--select file activity-->
    <style name="SelectFileActivity" parent="android:Theme.Holo.NoActionBar">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    </style>

    <style name="SelectFileList">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:layout_margin">@dimen/select_file_list_margin</item>
        <item name="android:padding">@dimen/select_file_list_padding</item>
        <item name="android:background">@drawable/select_file_list_background</item>
    </style>
</resources>
    

这里是manifests文件的application部分,其中SelectFileActivity中设置了theme引用了刚刚的样式。

<!--this is manifests's section of application-->
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".activity.MainActivity"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity
            android:name=".activity.SelectFileActivity"
            android:theme="@style/SelectFileActivity"/>
    </application>
    

结束语:
其实只要慢慢的了解了原理,后面的开发就轻松些了,安卓的机制还是挺好的。 这里就免不了要喷以下国内的应用厂商了,各种广告、各种后台服务,当然只是一部分(请叫我喷喷)。
由于想在我的代码浏览器中加入git功能,所以上github中找了个android的git库,没想到找到了一个和我想法一样的 软件,已经在安卓官方应用商店上架,哎,很久以前想下个代码浏览器,无奈国内的应用商店里没有中意的,今天机缘巧合, 让我在github中碰到了,索性自己编译了一个,但是适用起来发现两个bug,其一是代码高亮的问题,java代码的注释 会影响后面的代码,导致只能正常高亮最后一块代码,前面的都被注释了,还有一个就是当适用git来checkout 版本以后,第一次进入版本库会奔溃,暂时还没有看源码,所以不知道bug在哪里,以后有时间再看吧,
想要的同学可以自己编译一个,这里给出地址https://github.com/andrewromanenco/git.android.git
只需要导入到androidstudio中就可以编译了。在此谢谢作者,因为我找到了android的git库。