Warum setze ich CircleImageView von android support v4 library nicht öffentlich?

8

Ich habe android.support.v4.widget.CircleImageView lange bemerkt. Jedes Mal, wenn ich ImageView in einer runden Form verwenden möchte, würde CircleImageView in meinem Kopf erscheinen. Ich habe versucht, es für viele Male zu benutzen, aber jedes Mal habe ich versagt. Weil die Zugriffsberechtigung von android.support.v4.widget.CircleImageView default ist, was bedeutet, dass nur Klassen im selben Paket mit CircleImageView , nämlich android.support.v4.widget , darauf zugreifen können.

Ich kann jetzt nicht verstehen, dass round ImageView gemeinsam verwendet wird. Warum sollte CircleImageView nicht auf public gesetzt werden, damit Entwickler ein ImageView nicht in ein Round ImageView überschreiben müssen? Ist es nicht das Google Android Team, das uns dazu zwingt, Räder neu zu erfinden ?

Oder weiß ich das nicht CircleImageView gut?

Irgendwelche Tipps werden geschätzt. Vielen Dank im Voraus.

    
SilentKnight 03.07.2015, 09:07
quelle

2 Antworten

8

Ich habe versucht, Quellcodes von android.support.v4.widget.CircleImageView zu kopieren und einzufügen, um sie so zu veröffentlichen:

%Vor%

Sieht gut aus, oder? Es hat keine benutzerdefinierten Attribute und scheint in der Lage zu sein, als normales ImageView verwendet zu werden.

Aber wenn Sie es versucht haben, werden Sie herausfinden, dass NoSuchMethodException geworfen wird. Diese Ausnahme impliziert, dass notwendige Konstruktoren nicht überschrieben werden. So dass Sie es nicht einmal als normale View instanziieren können.

Nachdem ich diese Quelltexte gelesen habe, merke ich, dass CircleImageView nur Schatten hinter ImageView hinzufügt, deren Ergebnis kein RoundCornerImageView oder RoundImageView ist. Wenn ich also ein RoundImageView haben möchte, muss ich diese Klasse vergessen und diesen Effekt durch Überschreiben eines ImageView implementieren.

Endlich gibt es den Dateikommentar, der auf die Verwendung von android.support.v4.widget.CircleImageView hinweist:

  

Private Klasse erstellt, um Probleme mit Animationslistenern zu umgehen   aufgerufen werden, bevor die Animation tatsächlich abgeschlossen ist und unterstützt wird   Schatten auf älteren Plattformen.

Und ich hoffe, niemand wird so eine dumme Frage noch einmal stellen und es hier enden lassen, ^ _ ^, Haha ~

    
SilentKnight 03.07.2015, 10:38
quelle
3

Gemäß der Dokumentation ist diese Klasse eine private Klasse, die für die Arbeit verwendet wird und wir können sie nicht instanziieren. Kann sein, dass die Klasse früher entfernt wird, als ich vermute.

Es gibt Möglichkeiten, den kreisförmigen Hintergrund für eine Ansicht zu erstellen.

file: drawable / contact_badge_round.xml

%Vor%

Dann erstellen Sie in Ihrem Layout einen Button und legen Sie den Hintergrund als contact_badge_round

fest %Vor%     
Vijet Badigannavar 03.07.2015 10:20
quelle

Tags und Links