获取当前系统版本等级
Buidl.VERSION.SDK_INT
获取当前系统内存容量
File path = Enviroment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
blockSize = stat.getBlockSizeLong();
totalBlocks = stat.getBlockCountLong();
availableBlocks = stat.getAvailablesBocksLong();
//在Manifest.xml 中配置测试框架
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima.day03_sqlite"
></instrumentation>
<uses-library android:name="android.test.runner"/>
## 常用快捷键 ##
- ctrl + shift + o 导包
- ctrl + shift + t 快速查找某个类
- 先按ctrl + 2 ,再点L, 创建变量并命名
- ctrl + o , 在当前类中,快速查找某个方法
- ctrl + k, 向下查找某个字符串
- ctrl + shift + k, 向上查找某个字符串
- alt + 左方向键 跳转上一个页面
-ctrl+shift+f, 代码格式化
禁用点击事件三连发:
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" <span style="line-height:1.5"><span style="font-family:Microsoft YaHei; font-size:12px"><br style="line-height:1.5" /></span></span>
android.text.TextUtils的类,主要的功能如下:
是否为空字符 boolean
android.text.TextUtils.
isEmpty(CharSequence str)
拼接字符串 String android.text.TextUtils.join(CharSequence delimiter, Object[] tokens)
拆分字符串 String[]
android.text.TextUtils.
split(String text, String expression)
拆分字符串使用正则 String[]
android.text.TextUtils.
split(String text, Pattern pattern)
确定大小写是否有效在当前位置的文本 int
android.text.TextUtils.
getCapsMode(CharSequence cs, int off, int reqModes)
使用HTML编码这个字符串
String android.text.TextUtils.
htmlEncode(String s)
另外,
String[]
中的expression较特殊,如果采用TextUtils来分割someString的话返回的将是错误结果,正确的用法应该是TextUtilssplitandroid.text.TextUtils.
split(String text, String expression)
adapter.notifyDataSetChanged() //刷新页面
子线程不能刷新UI, 如果我们只是想弹出一个toast,可以通过一下来实现
public static void showToast(final Activity context, final String msg){ if("main".equals(Thread.currentThread().getName())){ Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); }else{ context.runOnUiThread(new Runnable() { public void run() {Toast.makeText(context, msg, 1).show(); }}); }}}
活动管理器 (任务管理器)
所有进程数据可以通过activitymanager 获取
<pre name="code" class="java">AcitivityManager activityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
包管理器 :
<pre name="code" class="java">PackageManager packageManager = getPackageManager();
获取listview 点击的当前item对象
<pre name="code" class="java">list_view.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //得到当前点击listview的对象 Object object = list_view.getItemAtPosition(position); if(object != null&& object instanceof TaskInfo){ TaskInfo taskInfo = (TaskInfo) object; } } });
// 判断当前展示的item是否是自己的程序。如果是。就把程序给隐藏
<pre name="code" class="java">if (taskInfo.getPackageName().equals(getPackageName())) {
// 隐藏 holder.tv_app_status.setVisibility(View.INVISIBLE); }
else { // 显示 holder.tv_app_status.setVisibility(View.VISIBLE); }
//获取系统可用内存和总内存
availMem = SystemInfoUtils.getAvailMem(this);
totalMem = SystemInfoUtils.getTotalMem(this);
广播的生命周期只有10s, 所以不能执行耗时操作
*对于service 中要使用参数为context时, 可以用getApplicationContext()
*对于需要几张图片来叠加起来形成的效果, 可以只用FrameLayout, 注意先添加的图片在页面显示时候在下面, 后添加的在上面
<pre name="code" class="java">//service不能直接跳转到activity, 如果需要这种操作, 如要加 flag Intent intent = new Intent(WatchDogService.this,EnterPwdActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
*在相对布局RelativeLayout 中居中使用 center_horizont="true" 在LinearLayout中居中使用 layout_gravity="center_horizontal"
*PopupWindow等需要点击事件的时候, 发现点击没有用, 说明需要设置获取焦点:
//要让其中的view获取焦点, 必须设置为true,还必须设置一个背景图片 <pre name="code" class="java">popupWindow.setFocusable(true); popupWindow.setBackgroundDrawable(new BitmapDrawable()); //设置点击外部即消失 popupWindow.setOutsideTouchable(true);
下拉选择: 1.假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view 此时,listview的item无法获取焦点,从而无法被点击 解决方法:给item的根布局增加以下属性 android:descendantFocusability="blocksDescendants" 设置之后,Button获取焦点,item中其他控件也可以获取焦点
*requestWindowFeature(Window.FEATURE_NO_TITLE); //设置没有title
*menuView.getLayoutParams().width
llPointGroup.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
llPointGroup.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//获得小圆点之间的距离
int width = llPointGroup.getChildAt(1).getLeft()-llPointGroup.getChildAt(0).getLeft();
System.out.println("width: "+width);
}
});
android:cacheColorHint="#fff"
lvList.setSelection(mChatList.size() - 1);
<span style="font-family:Microsoft YaHei;font-size:12px;">android:maxLines="2"
android:ellipsize="end"</span>
设置下拉刷新, setpadding之前获取headerview高度
mHeaderView.measure(0,0);
int mHeaderViewHeight = mHeaderView.getMeasuredHeight();
把viewpager设置给viewpager Indicator以后, 为了给indicator设置title
/**
* 重写此方法,返回页面标题,用于viewpagerIndicator的页签显示
*/
@Override
public CharSequence getPageTitle(int position) {
return mNewsTabData.get(position).title;
}
android: layout_gravity控制该控件在其父类中的位置, android:gravity控制子控件在自身中的位置