Ի՞նչ մեթոդներ կան View- ի վերանկարահանման համար Android-ում։
sobes.tech AI
Պատասխան AI-ից
Կան մի քանի հիմնական մեթոդներ View-ի վերաներկման կառավարելու համար Android-ում:
-
invalidate(): Այս մեթոդը նշում է ընթացիկ և բոլոր ենթավերածությունները որպես "աղտոտված", որոնք պահանջում են վերաներկում: Սիստեմը պլանավորում է նկարչական անցումը ապագայում (հաճախ հաջորդ ֆրեյմում): Օգտագործվում է, երբ ինչ-որ բան փոխվում է, ինչը ազդում է View-ի տեսքի վրա (օրինակ՝ գույն, տեքստ): Կոչվում է ցանկացած թելից: -
postInvalidate(): Դիպուկ էinvalidate(), բայց նախատեսված է ֆոնային թելերից կանչելու համար: Այն ուղարկում է հաղորդագրություն գլխավոր UI թելինinvalidate()կատարելու համար: -
requestLayout(): Այս մեթոդը ցույց է տալիս, որ View-ը պահանջում է իր չափի և դիրքի վերան հաշվարկը: Այն հրավիրում է չափման և դասավորության անցումները (measure and layout pass) վերաներկումից հետո: Օգտագործվում է, երբ ինչ-որ բան փոխվում է, ինչը ազդում է View-ի չափի կամ դիրքի վրա (օրինակ՝ ենթաառանցքների ավելացում/հեռացում, padding-ի փոփոխություն): Կոչվում է միայն գլխավոր UI թելից:
Եթե փոխվում է ինչպես արտաքին տեսքը, այնպես էլ չափը/պоложение View-ի, հաճախ բավական է կանչել requestLayout(), քանի որ այն սովորաբար կանչում է invalidate() գործընթացում: Սակայն, միայն արտաքին տեսքի ուղղակի փոփոխությունը պահանջում է միայն invalidate():
Օրինակ invalidate() օգտագործման համար:
// View-ի գույնի փոփոխություն գլխավոր թելում
myView.setBackgroundColor(Color.parseColor("#FF0000"));
myView.invalidate();
Օրինակ postInvalidate() օգտագործելու ֆոնային թելից:
new Thread(new Runnable() {
@Override
public void run() {
// View-ի տեքստի փոփոխություն ֆոնային թելում
myView.setText("Նոր տեքստ" );
myView.postInvalidate(); // Վերաներկում գլխավոր թելով
}
}).start();
Օրինակ requestLayout() օգտագործելու:
// Padding-ի փոփոխություն View-ում և դասավորության վերան հաշվարկման խնդրանք գլխավոր թելում
myView.setPadding(10, 10, 10, 10);
myView.requestLayout();
Կարևոր է հասկանալ View-ի նկարչական կյանքի ցիկլը:
- Տվյալների փոփոխություն (օրինակ՝ գույն, տեքստ, չափ):
invalidate()կամrequestLayout()կանչում:- Սիստեմի նկարչական պլանավորում:
- չափման անցում (
onMeasure()): - դասավորության անցում (
onLayout()): - նկարչական անցում (
onDraw()):
invalidate() մեթոդը սկսում է 6-րդ քայլը, իսկ requestLayout() - 4, 5 և 6-րդ քայլերը։