View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的(╯□╰);
Arrays类中的asList(T... array)方法,数组转List集合;反过来List.toArray();
String类中的format(String, Object...)方法,用来格式化strings.xml中的字符串。
TextUtils类中的isEmpty(String)方法,判断字符串是否为null或"";
TextView类中的append(String)方法,添加文本;
TextView类中的setTransformationMethod(TransformationMethod)方法,可用来实现“显示密码”功能;
TextWatcher接口,用来监听文本输入框内容的改变;
View类中的setSelected(boolean)方法结合android:state_selected=""用来实现图片选中效果;
TextView.setError() 在验证用户输入的时候很棒。
Context.getCacheDir() 获取缓存数据文件夹的路径,很简单但是知道的人不多,这个路径通常在SD卡上(这里的SD卡指的是广义上的SD卡,包括外部存储和内部存储)Adnroid/data/您的应用程序包名/cache/ 下面.测试的时候,可以去这里面看是否缓存成功.缓存在这里的好处是:不用自己再去手动创建文件夹,不用担心用户把自己创建的文件夹删掉,在应用程序卸载的时候,这里会被清空,使用第三方的清理工具的时候,这里也会被清空。
ActionBar.hide().show() 顾名思义,隐藏和显示ActionBar,可以优雅地在全屏和带Actionbar之间转换。
Linkify.addLinks() 在Text上添加链接。很实用。
SystemClock.sleep() 这个方法在保证一定时间的 sleep 时很方便,通常我用来进行 debug 和模拟网络延时。
PopupWindow——Android到处都在使用PopupWindow ,甚至你都没有意识到(标题导航条ActionBar,自动
补全AutoComplete,编辑框错误提醒Edittext Errors)。这个类是创建浮层内容的主要方法。
ActivityManager.clearApplicationUserData()—— 一键清理你的app产生的用户数据,可能是做用户退出登录功
能,有史以来最简单的方式了。
Fragment 的 setUserVisibleHint 方法,可实现 fragment 对用户可见时才加载资源(延迟加载)。
一直以为 Lollipop Dialer 接通画面里面那些酷炫的动画(文字部分)是很复杂的做出来的,后来发现其实只有一行。
只需要加好 android:animateLayoutChanges="true"然后 setVisibility 就可以了
EditTxt.setImeOptions, 使用EditText弹出软键盘时,修改回车键的显示内容(一直很讨厌用回车键来交互,所以之前一直不知道这玩意儿)
adb端口是5037 netstat -aon|findstr “5037”
全屏显示
1. // 全屏显示窗口
2. requestWindowFeature(Window.FEATURE_NO_TITLE);
3. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);或者 在AndroidManifest.xml 中加入 <activity android:name=".activity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
收缩或者展开代码块
OS X : Alt++/-
Windows Or Linux: Ctrl+Shift++/-
你可以在“Editor → Code Folding”自定义你的代码折叠范围。
定义快速查找 Ctrl+Shift+i
如果你想立马知道某个类或者方法的来源同时又不想丢掉当前的编码环境,你可以试试这个快捷键。
代码行级移动Alt+Shift+ ↑ / ↓
使用此快捷键可以以一行的形式移动代码,可上可下。效果如下图。
最近在遇到RelativeLayout里的gravity属性给它复制center_horizontal或者center都不能居中它的子组件,后来找到了替代方法,只要在它的每个子组件里加上android:layout_centerHorizontal="true" 就可以了
更改ImageView的scaleType的属性:matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY
1.android:scaleType="center"保持原图的大小,显示在ImageView的中心。
2.android:scaleType="centerCrop"将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止,原图超过ImageView的部分作裁剪处理。
3.android:scaleType="centerInside"将图片的内容完整居中显示,通过按比例缩小原图的size宽(高)等于或小于ImageView的宽(高)。
4.android:scaleType="matrix" 不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理。
5.android:scaleType="fitCenter"把原图按比例扩大或缩小到ImageView的ImageView的高度,居中显示
6.android:scaleType="fitEnd" 把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的下部分位置
7.android:scaleType="fitStart" 把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的上部分位置
8.android:scaleType="fitXY"把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView.
取消listview的点击效果 :android:listSelector="#00000000"
修改字符串颜色:
TextView textView2 = (TextView) findViewById(R.id.text2);
String text = "获得银宝箱!";
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.setSpan(new BackgroundColorSpan(Color.RED), 2, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); //设置指定位置文字的背景颜色
style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); //设置指定位置文字的颜色
textView2.setText(style);
进了activity 不让edittext把小键盘唤醒
android:focusable="true"android:focusableInTouchMode="true"
Throwable接口中的getStackTrace()方法(或者Thread类的getStackTrace()方法),根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[];
StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调试程序打印Log时非常有用;
UncaughtExceptionHandler接口,再好的代码异常难免,利用此接口可以对未捕获的异常善后;
Resources类中的getIdentifier(name, defType, defPackage)方法,根据资源名称获取其ID,做UI时经常用到;
View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的(╯□╰);
View类中的三个方法:callOnClick(),performClick(),performLongClick(),用于触发View的点击事件;
TextUtils类中的isEmpty(CharSequence)方法,判断字符串是否为null或"";
TextView类中的append(CharSequence)方法,添加文本。一些特殊文本直接用+连接会变成String;
View类中的getDrawingCache()等一系列方法,目前只知道可以用来截图;
DecimalFormat类,用于字串格式化包括指定位数、百分数、科学计数法等;
System类中的arraycopy(src, srcPos, dest, destPos, length)方法,用来copy数组;
Activity类中的onWindowFocusChanged(boolean),onNewIntent(intent)等回调方法;
View类中的getLocationInWindow(int[])方法和getLocationOnScreen(int[])方法,获取View在窗口/屏幕中的位置;
TextView类中的setTransformationMethod(TransformationMethod)方法,可用来实现“显示密码”功能;
Surface设置透明:SurfaceView.setZOrderOnTop(true);
SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);但是会挡住其它控件;
ListView或GridView类中的setFastScrollEnabled(boolean)方法,用来设置快速滚动滑块是否可见,当然前提是item够多;
Context类中的createPackageContext(packageName, flags)方法,可用来获取指定包名应用程序的Context对象。
通过View.getDrawingCache()可以获取截图,但是需要setDrawingCacheEnabled(true)频繁使用可能会oom,还有一种方法直接用canvas
Bitmap bm = Bitmap.createBitmap((int) (w * scale), (int) (h*scale), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas();
canvas.setBitmap(bm);
View.draw(canvas);
return bm;
说到几个oom,顺带说下有一种偷懒又有效的解决办法,在manifest上加android:largeHeap="true"
setUserVisibleHint getUserVisibleHint判断fragment是否可见
图片裁剪示例
Picasso.with( imageView.getContext() )
.load(url)
.resize(dp2px(250),dp2px(250))
.centerCrop()
.into(imageView);
RGB_565
对于不透明的图片可以使用RGB_565来优化内存。
Picasso.with( imageView.getContext() )
.load(url)
.config(Bitmap.Config.RGB_565)
.into(imageView);