博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android常用代码片段
阅读量:2227 次
发布时间:2019-05-09

本文共 3402 字,大约阅读时间需要 11 分钟。

1、设置窗口格式为半透明

getWindow().setFormat(PixelFormat.TRANSLUCENT);

2、Android中在非UI线程里更新View的不同方法:

    * Activity.runOnUiThread( Runnable )

    * View.post( Runnable )
    * View.postDelayed( Runnable, long )
    * Hanlder

3、取得屏幕大小

方法A:

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();
hAndW[0] = display.getWidth();
hAndW[1] = display.getHeight();

方法B:

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

hAndW[0] = dm.widthPixels;

hAndW[1] = dm.heightPixels;

4、取得内存大小

ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();

activityManager.getMemoryInfo(outInfo);

//可用内存

outInfo.availMem

//是否在低内存状态

outInfo.lowMemory

取得ScrollView的实际高度

scrollview.getHeight()

scrollview.getMeasuredHeight()
scrollview.compute()
scrollview.getLayoutParams().height

5、监听App安装/卸载事件

A.Define a class derived from class BroadcastReceiver;

B.Register broadcast receiver;
    MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
    
    IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
    filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    filter.addAction(Intent.ACTION_PACKAGE_ADDED);
    filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
    filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
    ...
    filter.addDataScheme("package"); //This line is very important. Otherwise, broadcast can't be received.
    
    registerReceiver(myReceiver, filter);    
    
Notes: The package name is Intent.mData. Intent.mData is not available in SDK 1.0, but it can be retrieved by calling Intent.getDataString();   

6、取得IP地址

A.Connect via WIFI

    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int ipAddress = wifiInfo.getIpAddress();
B.Connect via GPRS
    public String getLocalIpAddress(){
    try{
        for(Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){
          NetworkInterface intf = en.nextElement();
        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){
            InetAddress inetAddress = enumIpAddr.nextElement();
          if (!inetAddress.isLoopbackAddress()){
              return inetAddress.getHostAddress().toString();
          }
        }
      }
    }catch (SocketException ex){
        Log.e(S.TAG, ex.toString());
    }
        return null;
    }

7、Monitor File System Event: Open/Create..

android.os.FileObserver

8、Monitor Media Event: mount/unmount..

A.Define a class derived from class BroadcastReceiver;

B.Register broadcast receiver;
    MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
    
    IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
    filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
    filter.addAction(Intent.ACTION_MEDIA_EJECT);
    ...
    filter.addDataScheme("file"); //This is important. Otherwise, broadcast can't be received
  
    registerReceiver(myReceiver, filter);
About other broadcast actions for media, and extra data bind to the intent, please refer to http://developer.android.com/reference/android/content/Intent.html (please search ACTION_MEDIA_ on this web page)
Notes: The path of mounted media is Intent.mData. Intent.mData is not available in SDK 1.0, but it be retrieved by calling Intent.getDataString();

9、ListView 后面adapter数据已更改,但是ListView没有收到Notification

首先,必须将 更新adapter数据的代码放在:Handler.post(Runnable)方法中执行;

然后,如果Adapter数据的来源如果是cursor(CursorAdapter)的话 可以cursor.requery一下,如果是别的可以强制调用一下notifyChange, notifyChange 会调用 invalidate 进行重绘;

转载地址:http://cwefb.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>