为了账号安全,请及时绑定邮箱和手机立即绑定

View的渲染完毕事件是什么?

View的渲染完毕事件是什么?

慕工程0101907 2019-03-01 10:57:28
问题描述 现在有这么一个简单的Fragment: public class Level1Fragment extends Fragment { TextView tv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewGroup v=inflater.inflate(R.layout.activity_test,null); tv= (TextView) v.findViewById(R.id.level1_textview); tv.setText("啦啦啦"); return v; } //给View截图,代码应该没有问题 public static Bitmap convertViewToBitmap(View view){ view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); return view.getDrawingCache(); } 现在,我想在Fragment刚加载完成时,获取这个TextView的截图,我应该把代码放在哪个事件里? 尝试解决 我尝试过tv.postDelayed()、tv.post()以及tv.getViewTreeObserver().addOnPreDrawListener()。 尝试用的代码也贴出来吧: @Override public void onResume() { super.onResume(); tv.postDelayed(new Runnable() { @Override public void run() { final Bitmap bit=convertViewToBitmap(tv); //iv只是个简单的ImageView,与本问题无关 iv.setImageBitmap(bit); iv.startAnimation(new AlphaAnimation(1,0)); } },100); } 但是都无法获取到。 问题 所以,请问到底该用什么方法来正确获取到tv的截图呢? (btw,Fragment是直接通过FragmentTransaction.replace()显示的,而不是通过ViewPager,因此生命周期应该不会被打乱..) 求解惑!
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

你说的这三种方法前两种都是可以的啊,最后一种有问题,应该是getViewTreeObserver().addOnGlobalLayoutListener()

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 486 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号