@ZeroGeek
2016-01-04T08:11:58.000000Z
字数 2337
阅读 1014
android 建议
android开发团队建议用CursorLoader来替代 startManagingCursor()。如果您同时使用 Fragment,请务必使用CursorLoader来管理您的Cursor,不要再使用startManagingCursor()了。
convertView = getInflater().inflate(xxx_layout_id, null);
适配器中,如果inflate时的root参数为null,那么对应的item布局的最外层设置的实际宽高如200dip等都是无效,如果需要item的期望高度200dip有效,可以换一下写法:convertView = getInflater().inflate(xxx_layout_id, parent, false)。
http://android.jobbole.com/82316/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
四、 RS优雅式
什么是RS式呢?即Receiver+singleTask 。我们知道Activity有四种加载模式,而singleTask就是其中的一种,使用这个模式之后,当startActivity时,它先会在当前栈中查询是否存在Activity的实例,如果存在,则将其至于栈顶,并将其之上的所有Activity移除栈。我们打开一个app,首先是一个splash页面,然后会finish掉splash页面。跳转到主页。然后会在主页进行N次的跳转,期间会产生数量不定的Activity,有的被销毁,有的驻留在栈中,但是栈底永远是我们的HomeActivity。这样就让问题变得简单很多了。我们只需两步操作即可优雅的实现app的退出。
1、在HomeActivity注册一个退出广播,和第二个广播式一样,但是这里只需要在HomeActivity一个页面注册即可。
2、设置HomeActivity的启动模式为singleTask。
当我们需要退出的时候只需要startActivity(this,HomeActivity,class), 再发送一个退出广播。上面代码首先会把栈中HomeActivity之上的所有Activity移除出栈,然后接到广播finish自己。一切OK ! 没有弹框,不用考虑机型Rom适配。不会有内存问题,就是那么的优雅,简单!
1
FrameLayout view = (FrameLayout)findViewById(R.id.framelayout);view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bm = view.getDrawingCache();
2
FrameLayout view = (FrameLayout)findViewById(R.id.framelayout);Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);view.draw(canvas);
3
/*** 将view转成bitmap* @param view* @return*/public static Bitmap loadBitmapFromView(View view) {if (view == null) {return null;}view.measure(MeasureSpec.makeMeasureSpec(YUtils.dip2px(context, 60f),MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(YUtils.dip2px(context, 80f), MeasureSpec.EXACTLY));// 这个方法也非常重要,设置布局的尺寸和位置view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());// 生成bitmapBitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);// 利用bitmap生成画布Canvas canvas = new Canvas(bitmap);// 把view中的内容绘制在画布上view.draw(canvas);return bitmap;}public class YUtils {/*** 根据手机的分辨率从 dp 的单位 转成为 px(像素)*/public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}/*** 根据手机的分辨率从 px(像素) 的单位 转成为 dp*/public static int px2dip(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}
