前言
每次分享意味着每次都有進步,本系列以實用為主,歡迎和我分享和推薦好用的代碼段~~
聲明
歡迎轉載,但請保留文章原始出處:)
部落格園:http://www.cnblogs.com
農民伯伯: http://over140.cnblogs.com
正文
1、展開、收起狀态欄
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);
用途:可用于點選notifacation之後收起狀态欄
2、 擷取狀态欄高度
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;
3、listview使用viewholder極簡寫法
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;
用法:
@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);
用起來非常簡練,将viewholder隐于無形。
4、 設定activity透明
<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>
說明:appbasetheme一般是你application指定的android:theme是啥這裡就是啥,否則activity内部的空間風格可能不一緻。
用途:用于模拟dialog效果,比如再service中沒法用dialog,就可以用activity來模拟
5、 代碼切換全屏
//切換到全屏
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);
注意:切換到全屏時,底部的虛拟按鍵仍然是顯示的。次方法可多次調用用于切換
用途:播放器界面經常會用到
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