java - Was ist das Rendering-Abschlussereignis von View?
迷茫
迷茫 2017-06-10 09:48:47
0
1
921

Problembeschreibung

Jetzt gibt es so ein einfaches 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();
    }
    

Jetzt möchte ich einen Screenshot dieser Textansicht machen, wenn das Fragment gerade geladen wird. In welchem ​​Fall soll ich den Code einfügen?

Versuchen Sie es zu lösen

Ich habe es versuchttv.postDelayed()tv.post()以及tv.getViewTreeObserver().addOnPreDrawListener().

Posten Sie den Code, den Sie ausprobiert haben:

@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);

    }

Aber sie sind nicht erhältlich.

Frage

Welche Methode sollte also verwendet werden, um den Screenshot von tv korrekt zu erhalten?

(Übrigens wird das Fragment direkt übergeben FragmentTransaction.replace()显示的,而不是通过ViewPager, sodass der Lebenszyklus nicht unterbrochen werden sollte.)

Lösen Sie Ihre Zweifel!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

Antworte allen(1)
扔个三星炸死你

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage