天天看點

Android實用代碼七段(五)

前言

 每次分享意味着每次都有進步,本系列以實用為主,歡迎和我分享和推薦好用的代碼段~~

聲明

歡迎轉載,但請保留文章原始出處:) 

部落格園:http://www.cnblogs.com

農民伯伯: http://over140.cnblogs.com 

正文

1、展開、收起狀态欄 

Android實用代碼七段(五)

    public static final void collapsestatusbar(context ctx) {

        object sbservice = ctx.getsystemservice("statusbar");

        try {

            class<?> statusbarmanager = class.forname("android.app.statusbarmanager");

            method collapse;

            if (build.version.sdk_int >= build.version_codes.jelly_bean_mr1) {

                collapse = statusbarmanager.getmethod("collapsepanels");

            } else {

                collapse = statusbarmanager.getmethod("collapse");

            }

            collapse.invoke(sbservice);

        } catch (exception e) {

            e.printstacktrace();

        }

    }

    public static final void expandstatusbar(context ctx) {

            method expand;

            if (build.version.sdk_int >= 17) {

                expand = statusbarmanager.getmethod("expandnotificationspanel");

                expand = statusbarmanager.getmethod("expand");

            expand.invoke(sbservice);

Android實用代碼七段(五)

用途:可用于點選notifacation之後收起狀态欄

2、 擷取狀态欄高度

Android實用代碼七段(五)

    public static int getstatusbarheight(context context){

        class<?> c = null;

        object obj = null;

        field field = null;

        int x = 0, statusbarheight = 0;

            c = class.forname("com.android.internal.r$dimen");

            obj = c.newinstance();

            field = c.getfield("status_bar_height");

            x = integer.parseint(field.get(obj).tostring());

            statusbarheight = context.getresources().getdimensionpixelsize(x);

        } catch (exception e1) {

            e1.printstacktrace();

        return statusbarheight;

Android實用代碼七段(五)

3、listview使用viewholder極簡寫法

Android實用代碼七段(五)

    public static <t extends view> t getadapterview(view convertview, int id) {

        sparsearray<view> viewholder = (sparsearray<view>) convertview.gettag();

        if (viewholder == null) {

            viewholder = new sparsearray<view>();

            convertview.settag(viewholder);

        view childview = viewholder.get(id);

        if (childview == null) {

            childview = convertview.findviewbyid(id);

            viewholder.put(id, childview);

        return (t) childview;

Android實用代碼七段(五)

用法:

Android實用代碼七段(五)

    @override

    public view getview(int position, view convertview, viewgroup parent) {

        if (convertview == null) {

            convertview = layoutinflater.from(getactivity()).inflate(r.layout.fragment_feed_item, parent, false);

        imageview thumnailview = getadapterview(convertview, r.id.video_thumbnail);

        imageview avatarview =  getadapterview(convertview, r.id.user_avatar);

        imageview appiconview = getadapterview(convertview, r.id.app_icon);

Android實用代碼七段(五)

  用起來非常簡練,将viewholder隐于無形。

4、 設定activity透明

Android實用代碼七段(五)

    <style name="transparentactivity" parent="appbasetheme">

        <item name="android:windowbackground">@android:color/transparent</item>

        <item name="android:colorbackgroundcachehint">@null</item>

        <item name="android:windowistranslucent">true</item>

        <item name="android:windownotitle">true</item>

        <item name="android:windowcontentoverlay">@null</item>

    </style>

Android實用代碼七段(五)

說明:appbasetheme一般是你application指定的android:theme是啥這裡就是啥,否則activity内部的空間風格可能不一緻。

用途:用于模拟dialog效果,比如再service中沒法用dialog,就可以用activity來模拟

5、 代碼切換全屏

Android實用代碼七段(五)

//切換到全屏

getwindow().clearflags(windowmanager.layoutparams.flag_force_not_fullscreen);

getactivity().getwindow().addflags(windowmanager.layoutparams.flag_fullscreen);

//切換到非全屏

getwindow().clearflags(windowmanager.layoutparams.flag_fullscreen);

getwindow().addflags(windowmanager.layoutparams.flag_force_not_fullscreen);

Android實用代碼七段(五)

注意:切換到全屏時,底部的虛拟按鍵仍然是顯示的。次方法可多次調用用于切換

用途:播放器界面經常會用到 

6、調用開發者選項中顯示觸摸位置功能

android.provider.settings.system.putint(getcontentresolver(), "show_touches", 1);

設定1顯示,設定0不顯示。

7、擷取裝置上已安裝并且可啟動的應用清單

            intent intent = new intent(intent.action_main);

            intent.addcategory(intent.category_launcher);

            list<resolveinfo> activities = getpackagemanager().queryintentactivities(intent, 0)

注意:使用getinstalledapplications會傳回很多無法啟動甚至沒有圖示的系統應用。resolveinfo.activityinfo.applicationinfo也能取到你想要的資料。

轉載:http://www.cnblogs.com/over140/p/4062209.html

繼續閱讀