@ZeroGeek
2016-01-04T08:11:58.000000Z
字数 2337
阅读 916
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());
// 生成bitmap
Bitmap 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);
}