- Katılım
- 17 Haz 2010
- Konular
- 3,640
- Mesajlar
- 19,614
- Çözüm
- 54
- Online süresi
- 17d 14h
- Reaksiyon Skoru
- 4,815
- Altın Konu
- 163
- TM Yaşı
- 15 Yıl 11 Ay 25 Gün
- Başarım Puanı
- 474
- Yaş
- 31
- MmoLira
- -933
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Android 12, platformda ve başlatıcılarda kullanıcı ve geliştirici deneyimini iyileştirmek için mevcut Widgets API'sini yeniliyor. Widget'ınızın Android 12 ile uyumlu olduğundan nasıl emin olacağınızı öğrenmek ve ayrıca mevcut widget'ınızı yenilemek için API'ler için bir referans olarak bu kılavuzu kullanın.
Android 12'deki widget'ların köşeleri yuvarlatılmıştır. Android 12 veya sonraki sürümleri çalıştıran bir cihazda bir uygulama widget'ı kullanıldığında, başlatıcı widget'ın arka planını otomatik olarak tanımlar ve onu köşeleri yuvarlatacak şekilde kırpar.
Bu senaryoda, pencere aracınız aşağıdaki koşulların hiçbirinde düzgün görüntülenmeyebilir:
Dikkat: Köşe yarıçapının boyutu hem cihaz üreticileri (16dp'ye kadar) hem de üçüncü taraf başlatıcılar tarafından kontrol edilebildiğinden, yuvarlatılmış köşelerin boyutları cihazlar arasında farklılık gösterebilir. Tatmin edici olmayan sonuçlardan kaçınmak için widget'ı yenilemenizi öneririz.
Örneği kullan
Yuvarlatılmış köşeler uygulayın
Android 12, widget'ınızın yuvarlatılmış köşelerinin yarıçapını ayarlamak için aşağıdaki sistem parametrelerini sunar:
ve pencere aracının içindeki görünümler için system_app_widget_inner_radius kullanan bir pencere aracını göstermektedir.
Dikkat: Bu parametreler, deneyimleri uyarlamayı amaçlayan cihaz üreticileri veya üçüncü taraf başlatıcılar tarafından geçersiz kılınabilir.
Yuvarlatılmış köşelerle geriye dönük uyumluluk
Widget'ın önceki Android sürümleriyle uyumlu olduğundan emin olmak için, aşağıdaki XML dosyası örneklerinde gösterildiği gibi, Android 12 için özel öznitelikler tanımlamanızı ve bunları geçersiz kılmak üzere özel bir tema kullanmanızı öneririz:
[CODE lang="css" title="/values/attrs.xml"]<resources>
<attr name="backgroundRadius" format="dimension" />
</resources>[/CODE]
[CODE lang="css" title="/values/styles.xml"]<resources>
<style name="MyWidgetTheme">
<item name="backgroundRadius">@dimen/my_background_radius_dimen</item>
</style>
</resources>[/CODE]
[CODE lang="css" title="/values-31/styles.xml"]<resources>
<style name="MyWidgetTheme" parent="@android:style/Theme.DeviceDefault.DayNight">
<item name="backgroundRadius">@android:dimen/system_app_widget_background_radius</item>
</style>
</resources>[/CODE]
[CODE lang="css" title="/drawable/my_widget.xml"]<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="?attr/backgroundRadius" />
...
</shape>[/CODE]
[CODE lang="css" title="/layout/my_widget_layout.xml"]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:background="@drawable/my_widget_background" />[/CODE]
Dinamik renkler uygula
Android 12'de bir widget, düğmeler, arka planlar ve diğer bileşenler için cihaz tema renklerini kullanabilir. Bu, farklı widget'lar arasında daha yumuşak geçişler ve tutarlılık sağlar.
Aşağıdaki örnekte, cihaz teması rengi "kahverengimsi" olup, vurgu renginin ve widget arka planının uyum sağlamasına neden olur. Bunu, sistemin varsayılan temasını (
) ve renk özniteliklerini kullanarak başarabilirsiniz. Yaygın olarak kullanılan bazı renk özellikleri şunlardır:
Widget normal tema - Widget karanlık tema
Dinamik renklerle geriye dönük uyumluluk
Android 12 için özel bir tema oluşturmanızı ve onu geçersiz kılmanızı öneririz. Aşağıdaki örnekler, bunun çeşitli XML dosyalarıyla nasıl yapılacağını gösterir:
[CODE lang="css" title="/values/styles.xml"]<resources>
<style name="MyWidget.TextView">
<item name="android:textColor">@color/my_text_color</item>
</style>
<style name="MyWidgetTheme">
<item name="textViewStyle">@style/MyWidget.TextView</item>
</style>
</resources>[/CODE]
[CODE lang="css" title="/values-31/styles.xml"]<resources>
<style name="MyWidgetTheme" parent="Theme.DeviceDefault.DayNight" />
</resources>[/CODE]
[CODE lang="css" title="/layout/my_widget_layout.xml"]<resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/MyWidgetTheme" />
</resources>[/CODE]
Widget'ları kişiselleştirmeyi kolaylaştırın
appwidget-provider'ın configure özniteliği ile bir yapılandırma etkinliği belirtirseniz, App Widget ana bilgisayarı, bir kullanıcı pencere öğesini ana ekranına ekledikten hemen sonra bu etkinliği başlatır.
Android 12, kullanıcılar için daha iyi bir yapılandırma deneyimi sağlamanıza olanak tanıyan yeni seçenekler ekler.
Kullanıcıların yerleştirilmiş widget'ları yeniden yapılandırmasına izin verin
Yeniden yapılandırılabilir olarak etiketlenen widget'ları yapılandırmak için kullanıcılar widget'a uzun süre basabilir. Bu, ayarları değiştirmek için dokunabilecekleri bir Yeniden Yapılandır düğmesi görüntüler.
Not: Yeniden yapılandırılabilir bayrak Android 9'da (API seviyesi 28) tanıtıldı, ancak Android 12'ye kadar başlatıcılarda yaygın olarak desteklenmiyordu.
Widget'ın varsayılan yapılandırmasını kullanın
Widget'ınızın bir kullanıcı eklediğinde varsayılan konfigürasyonunu kullanmasını istiyorsanız, widgetFeatures alanında hem
hem de
bayrakları belirterek konfigürasyon adımını atlayabilirsiniz. Bu, bir kullanıcı widget'ı ekledikten sonra yapılandırma etkinliğini başlatmayı atlar. (Daha önce belirtildiği gibi, kullanıcı daha sonra widget'ı yeniden yapılandırabilir.)
Örneğin, bir saat widget'ı ilk yapılandırmayı atlayabilir ve varsayılan olarak cihazın saat dilimini gösterebilir.
Widget yapılandırma seçenekleriyle geriye dönük uyumluluk
Uygulamanız, önceki Android sürümlerindeki
ve
bayrakları kullanabilir. Ancak, bu bayrakların herhangi bir etkisi olmayacak ve sistem yine de yapılandırma etkinliğini başlatacaktır.
Yeni bileşik düğmeler ekleyin
Android 12, aşağıdaki mevcut bileşenleri kullanarak durum bilgisi olan davranış için yeni destek ekler:
Aşağıdaki kod örneği, bu bileşenlerin nasıl uygulanacağını gösterir.
Widget bileşik düğmeleriyle geriye dönük uyumluluk
Biri Android 12 veya sonraki sürümünü çalıştıran (
) ve diğeri Android'in önceki sürümlerini hedefleyen (varsayılan
res/layout klasöründe) iki farklı düzen sağlayın.
Widget boyutları ve düzenleri için geliştirilmiş API'leri kullanın
Android 12'den başlayarak, aşağıdakileri yaparak daha rafine boyut özellikleri ve daha esnek düzenler sağlayabilirsiniz:
Android 12, widget'ınızın değişen ekran boyutlarına sahip farklı cihazlarda daha güvenilir bir şekilde boyutlandırılmasını sağlamanıza olanak tanıyan yeni API'ler ekler.
Mevcut
,
,
ve
özniteliklerine ek olarak aşağıdaki yeni appwidget-provider özniteliklerini kullanın:
Duyarlı düzenler sağlayın
Düzenin, widget'ın boyutuna bağlı olarak değişmesi gerekiyorsa, her biri bir dizi boyut için geçerli olan küçük bir düzen kümesi oluşturmanızı öneririz. (Bu mümkün değilse, başka bir seçenek de, çalışma zamanında tam pencere öğesi boyutuna dayalı düzenler sağlamaktır.)
Bu özelliğin uygulanması, daha sorunsuz ölçeklendirme ve genel olarak daha iyi sistem sağlığı sağlar; bunun nedeni, widget'ı farklı bir boyutta her görüntülediğinde sistemin uygulamayı uyandırması gerekmemesidir.
Aşağıdaki kod örneği, bir düzen listesinin nasıl sağlanacağını gösterir.
Kesin düzenler sağlayın
Küçük bir duyarlı düzen kümesi uygun değilse, bunun yerine pencere öğesinin gösterildiği boyutlara göre uyarlanmış farklı düzenler sağlayabilirsiniz. Bu genellikle telefonlar için iki boyut (portre ve yatay mod) ve katlanabilirler için dört boyuttur.
Bu çözümü uygulamak için uygulamanızın aşağıdaki adımları gerçekleştirmesi gerekir:
Not: Boyut listesini sağlamak, başlatıcının sorumluluğundadır. Aygıtta bu alanı desteklemeyen bir başlatıcı varsa, boyut listesi boş veya boş olabilir.
Aşağıdaki kod örneği, tam düzenlerin nasıl sağlanacağını gösterir.
Widget düzeni boyutlarıyla geriye dönük uyumluluk
Önceden,
Uygulamanızın widget seçici deneyimini iyileştirin
Android 12, dinamik pencere öğesi önizlemeleri ve pencere öğesi açıklamaları ekleyerek uygulamanız için pencere öğesi seçici deneyimini geliştirmenize olanak tanır.
Widget seçiciye ölçeklenebilir widget önizlemeleri ekleyin
Android 12'de, widget seçicide görüntülenen widget önizlemesi, widget'ın varsayılan boyutuna ayarlanmış bir XML düzeni olarak sağlayacağınız ölçeklenebilir bir önizlemeden oluşur. Önceden, widget önizlemesi statik çizilebilir bir kaynaktı ve bazı durumlarda önizlemelerin ana ekrana eklendikten sonra widget'ları doğru bir şekilde yansıtmamasına neden oluyordu.
Ölçeklenebilir pencere öğesi önizlemelerini uygulamak için, bunun yerine bir XML düzeni sağlamak için appwidget-provider öğesinin
İdeal olarak, bu, gerçekçi varsayılan veya test değerlerine sahip gerçek pencere öğesiyle aynı düzen olmalıdır.
Ölçeklenebilir widget önizlemeleriyle geriye dönük uyumluluk
Widget seçicileri, widget'ınızın önizlemelerini göstermek üzere Android 11 veya önceki sürümlerde etkinleştirmek için önizlemeImage özniteliğini belirlemeye devam edin.
Widget'ınız için bir açıklama ekleyin
Android 12'de, isteğe bağlı olarak, widget seçicinin widget'ınız için görüntülenmesi için bir açıklama sağlayabilirsiniz.
açıklama özelliğini kullanarak widget'ınız için bir açıklama sağlayın:
Not: Karakter sınırlaması yoktur, ancak açıklama için gösterim ve kullanılabilir alan cihaza bağlı olarak farklılık gösterebilir. Mümkün olduğunca kısa olması önemlidir.
Widget açıklamalarıyla geriye dönük uyumluluk
Uygulamanız, Android'in önceki sürümlerinde
Daha yumuşak geçişleri etkinleştirin
Android 12'de başlatıcılar, bir kullanıcı uygulamanızı bir pencere öğesinden başlattığında daha yumuşak bir geçiş sağlar.
Bu geliştirilmiş geçişi etkinleştirmek için arka plan öğenizi tanımlamak için
veya
kullanın:
Uyarı: Yayın trambolinlerini kullanmaktan kaçının. Android 12'de, bir uygulama, bir widget tıklamasının PendingIntent'inden başlatılmışsa, bir yayın alıcısından veya hizmetten bir etkinlik başlatabilir. Ancak yeni uygulama animasyonu, bir yayın alıcısından veya hizmetten başlatılan uygulamalar için kullanılmayacak ve bu da kötü bir kullanıcı deneyimine yol açacaktır.
Daha yumuşak geçişlerle geriye dönük uyumluluk
Uygulamanız, Android'in önceki sürümlerinde
kullanabilir, ancak bunun herhangi bir etkisi olmaz.
Basitleştirilmiş RemoteViews koleksiyonlarını kullanın
Android 12,
If the collection doesn’t use a constant set of layouts (in other words, if some items are only sometimes present), use
to specify the maximum number of unique layouts the collection can contain.
Here’s an example of how to implement
RemoteViews collections.
RemoteView'lerin çalışma zamanı değişikliğini kullanın
Android 12,
özniteliklerinin çalışma zamanı değişikliğine izin veren birkaç
yöntemi ekler. Eklenen yöntemlerin tam listesi için
başvurusuna bakın.
Aşağıdaki kod örneği, yeni yöntemlerden birkaçının nasıl kullanılacağını gösterir.
Android 12'deki widget'ların köşeleri yuvarlatılmıştır. Android 12 veya sonraki sürümleri çalıştıran bir cihazda bir uygulama widget'ı kullanıldığında, başlatıcı widget'ın arka planını otomatik olarak tanımlar ve onu köşeleri yuvarlatacak şekilde kırpar.
Bu senaryoda, pencere aracınız aşağıdaki koşulların hiçbirinde düzgün görüntülenmeyebilir:
- Widget, köşelerde içerik barındırıyor: Bu, köşe alanındaki bazı içeriğin kırpılmasına neden olabilir.
- Widget, kırpılmaya duyarlı olmayan bir arka plan kullanır. Bu, şeffaf bir arka plan, boş görünümler veya düzenler ya da kırpılmaya eğilimli olmayan diğer özel arka plan türlerini içerir. Sistem, kullanılacak arka planı doğru şekilde tanımlayamayabilir.
Dikkat: Köşe yarıçapının boyutu hem cihaz üreticileri (16dp'ye kadar) hem de üçüncü taraf başlatıcılar tarafından kontrol edilebildiğinden, yuvarlatılmış köşelerin boyutları cihazlar arasında farklılık gösterebilir. Tatmin edici olmayan sonuçlardan kaçınmak için widget'ı yenilemenizi öneririz.
Örneği kullan
Yuvarlatılmış köşeler uygulayın
Android 12, widget'ınızın yuvarlatılmış köşelerinin yarıçapını ayarlamak için aşağıdaki sistem parametrelerini sunar:
- : Widget arka planının hiçbir zaman 28 dp'den büyük olmayacak köşe yarıçapı.Kod:
system_app_widget_background_radius - : Widget içindeki herhangi bir görünümün köşe yarıçapı. Bu, 8dp dolgu kullanırken güzel bir şekilde hizalamak için arka plan yarıçapından tam olarak 8dp daha azdır.Kod:
system_app_widget_inner_radius
Kod:
system_app_widget_background_radius
- Widget'ın köşesi.
- Widget içindeki bir görünümün köşesi.
Dikkat: Bu parametreler, deneyimleri uyarlamayı amaçlayan cihaz üreticileri veya üçüncü taraf başlatıcılar tarafından geçersiz kılınabilir.
Yuvarlatılmış köşelerle geriye dönük uyumluluk
Widget'ın önceki Android sürümleriyle uyumlu olduğundan emin olmak için, aşağıdaki XML dosyası örneklerinde gösterildiği gibi, Android 12 için özel öznitelikler tanımlamanızı ve bunları geçersiz kılmak üzere özel bir tema kullanmanızı öneririz:
[CODE lang="css" title="/values/attrs.xml"]<resources>
<attr name="backgroundRadius" format="dimension" />
</resources>[/CODE]
[CODE lang="css" title="/values/styles.xml"]<resources>
<style name="MyWidgetTheme">
<item name="backgroundRadius">@dimen/my_background_radius_dimen</item>
</style>
</resources>[/CODE]
[CODE lang="css" title="/values-31/styles.xml"]<resources>
<style name="MyWidgetTheme" parent="@android:style/Theme.DeviceDefault.DayNight">
<item name="backgroundRadius">@android:dimen/system_app_widget_background_radius</item>
</style>
</resources>[/CODE]
[CODE lang="css" title="/drawable/my_widget.xml"]<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="?attr/backgroundRadius" />
...
</shape>[/CODE]
[CODE lang="css" title="/layout/my_widget_layout.xml"]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:background="@drawable/my_widget_background" />[/CODE]
Dinamik renkler uygula
Android 12'de bir widget, düğmeler, arka planlar ve diğer bileşenler için cihaz tema renklerini kullanabilir. Bu, farklı widget'lar arasında daha yumuşak geçişler ve tutarlılık sağlar.
Aşağıdaki örnekte, cihaz teması rengi "kahverengimsi" olup, vurgu renginin ve widget arka planının uyum sağlamasına neden olur. Bunu, sistemin varsayılan temasını (
Kod:
@android:style/Theme.DeviceDefault.DayNight
-
Kod:
?android:attr/colorAccent -
Kod:
?android:attr/colorBackground -
Kod:
?android:attr/textColorPrimary and ?android:attr/textColorSecondary
Widget normal tema - Widget karanlık tema
Android 12 için özel bir tema oluşturmanızı ve onu geçersiz kılmanızı öneririz. Aşağıdaki örnekler, bunun çeşitli XML dosyalarıyla nasıl yapılacağını gösterir:
[CODE lang="css" title="/values/styles.xml"]<resources>
<style name="MyWidget.TextView">
<item name="android:textColor">@color/my_text_color</item>
</style>
<style name="MyWidgetTheme">
<item name="textViewStyle">@style/MyWidget.TextView</item>
</style>
</resources>[/CODE]
[CODE lang="css" title="/values-31/styles.xml"]<resources>
<style name="MyWidgetTheme" parent="Theme.DeviceDefault.DayNight" />
</resources>[/CODE]
[CODE lang="css" title="/layout/my_widget_layout.xml"]<resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/MyWidgetTheme" />
</resources>[/CODE]
Widget'ları kişiselleştirmeyi kolaylaştırın
appwidget-provider'ın configure özniteliği ile bir yapılandırma etkinliği belirtirseniz, App Widget ana bilgisayarı, bir kullanıcı pencere öğesini ana ekranına ekledikten hemen sonra bu etkinliği başlatır.
Android 12, kullanıcılar için daha iyi bir yapılandırma deneyimi sağlamanıza olanak tanıyan yeni seçenekler ekler.
Kullanıcıların yerleştirilmiş widget'ları yeniden yapılandırmasına izin verin
Yeniden yapılandırılabilir olarak etiketlenen widget'ları yapılandırmak için kullanıcılar widget'a uzun süre basabilir. Bu, ayarları değiştirmek için dokunabilecekleri bir Yeniden Yapılandır düğmesi görüntüler.
- Yeniden yapılandır düğmesi.
CSS:
<appwidget-provider
...
android:configure="com.myapp.WidgetConfigActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
Not: Yeniden yapılandırılabilir bayrak Android 9'da (API seviyesi 28) tanıtıldı, ancak Android 12'ye kadar başlatıcılarda yaygın olarak desteklenmiyordu.
Widget'ın varsayılan yapılandırmasını kullanın
Widget'ınızın bir kullanıcı eklediğinde varsayılan konfigürasyonunu kullanmasını istiyorsanız, widgetFeatures alanında hem
Kod:
configuration_optional
Kod:
reconfigurable
Örneğin, bir saat widget'ı ilk yapılandırmayı atlayabilir ve varsayılan olarak cihazın saat dilimini gösterebilir.
CSS:
<appwidget-provider
...
android:configure="com.myapp.WidgetConfigActivity"
android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>
Widget yapılandırma seçenekleriyle geriye dönük uyumluluk
Uygulamanız, önceki Android sürümlerindeki
Kod:
configuration_optional
Kod:
reconfigurable
Yeni bileşik düğmeler ekleyin
Android 12, aşağıdaki mevcut bileşenleri kullanarak durum bilgisi olan davranış için yeni destek ekler:
-
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
-
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
-
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Aşağıdaki kod örneği, bu bileşenlerin nasıl uygulanacağını gösterir.
Kod:
// Check the view.
remoteView.setCompoundButtonChecked(R.id.my_checkbox, true)
// Check a radio group.
remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2)
// Listen for check changes. The intent will have an extra with the key
// EXTRA_CHECKED that specifies the current checked state of the view.
remoteView.setOnCheckedChangeResponse(
R.id.my_checkbox,
RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent)
)
Java:
// Check the view.
remoteView.setCompoundButtonChecked(R.id.my_checkbox, true);
// Check a radio group.
remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2);
// Listen for check changes. The intent will have an extra with the key
// EXTRA_CHECKED that specifies the current checked state of the view.
remoteView.setOnCheckedChangeResponse(
R.id.my_checkbox,
RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent)
);
Widget bileşik düğmeleriyle geriye dönük uyumluluk
Biri Android 12 veya sonraki sürümünü çalıştıran (
Kod:
res/layout-v31
Kod:
res/layout-v31
Widget boyutları ve düzenleri için geliştirilmiş API'leri kullanın
Android 12'den başlayarak, aşağıdakileri yaparak daha rafine boyut özellikleri ve daha esnek düzenler sağlayabilirsiniz:
-
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
- Duyarlı düzenler veya tam düzenler sağlayın
Android 12, widget'ınızın değişen ekran boyutlarına sahip farklı cihazlarda daha güvenilir bir şekilde boyutlandırılmasını sağlamanıza olanak tanıyan yeni API'ler ekler.
Mevcut
Kod:
minWidth
Kod:
minHeight
Kod:
minResizeWidth
Kod:
minResizeHeight
-
veKod:
targetCellWidthWidget'ın hedef boyutunu başlatıcı ızgara hücreleri açısından tanımlar. Tanımlanmışsa, bu özniteliklerKod:targetCellHeight:veyaKod:minWidthyerine kullanılır.Kod:minHeight -
veKod:
maxResizeWidthBaşlatıcının, kullanıcının widget'ı yeniden boyutlandırmasına izin verdiği maksimum boyutu tanımlar.Kod:maxResizeHeight:
CSS:
<appwidget-provider
...
android:targetCellWidth="3"
android:targetCellHeight="2"
android:maxResizeWidth="250dp"
android:maxResizeHeight="110dp">
</appwidget-provider>
Duyarlı düzenler sağlayın
Düzenin, widget'ın boyutuna bağlı olarak değişmesi gerekiyorsa, her biri bir dizi boyut için geçerli olan küçük bir düzen kümesi oluşturmanızı öneririz. (Bu mümkün değilse, başka bir seçenek de, çalışma zamanında tam pencere öğesi boyutuna dayalı düzenler sağlamaktır.)
Bu özelliğin uygulanması, daha sorunsuz ölçeklendirme ve genel olarak daha iyi sistem sağlığı sağlar; bunun nedeni, widget'ı farklı bir boyutta her görüntülediğinde sistemin uygulamayı uyandırması gerekmemesidir.
Aşağıdaki kod örneği, bir düzen listesinin nasıl sağlanacağını gösterir.
CSS:
override fun onUpdate(...) {
val smallView = ...
val tallView = ...
val wideView = ...
val viewMapping: Map<SizeF, RemoteViews> = mapOf(
SizeF(100f, 100f) to smallView,
SizeF(100f, 200f) to tallView,
SizeF(200f, 100f) to wideView
)
val remoteViews = RemoteViews(viewMapping)
appWidgetManager.updateAppWidget(id, remoteViews)
}
Java:
@Override
public void onUpdate(...) {
RemoteViews smallView = ...;
RemoteViews tallView = ...;
RemoteViews wideView = ...;
Map<SizeF, RemoteViews> viewMapping = new ArrayMap<>();
viewMapping.put(new SizeF(100f, 100f), smallView);
viewMapping.put(new SizeF(100f, 200f), tallView);
viewMapping.put(new SizeF(200f, 100f), wideView);
RemoteViews remoteViews = new RemoteViews(viewMapping);
appWidgetManager.updateAppWidget(id, remoteViews);
}
Kesin düzenler sağlayın
Küçük bir duyarlı düzen kümesi uygun değilse, bunun yerine pencere öğesinin gösterildiği boyutlara göre uyarlanmış farklı düzenler sağlayabilirsiniz. Bu genellikle telefonlar için iki boyut (portre ve yatay mod) ve katlanabilirler için dört boyuttur.
Bu çözümü uygulamak için uygulamanızın aşağıdaki adımları gerçekleştirmesi gerekir:
- Boyut kümesi değiştiğinde çağrılan
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.aşırı yükle.
- Boyutları içeren bir
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.döndürenLinkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.öğesini çağırın.
- Paketten
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.anahtarına erişin.
Not: Boyut listesini sağlamak, başlatıcının sorumluluğundadır. Aygıtta bu alanı desteklemeyen bir başlatıcı varsa, boyut listesi boş veya boş olabilir.
Aşağıdaki kod örneği, tam düzenlerin nasıl sağlanacağını gösterir.
CSS:
// Create the RemoteViews for the given size.
private fun createRemoteViews(size: SizeF): RemoteViews { }
override fun onAppWidgetOptionsChanged(
context: Context,
manager: AppWidgetManager,
id: Int,
newOptions: Bundle?
) {
super.onAppWidgetOptionsChanged(context, manager, id, newOptions)
// Get the new sizes.
val sizes = newOptions?.getParcelableArrayList<SizeF>(
AppWidgetManager.OPTION_APPWIDGET_SIZES
)
// Check that the list of sizes is provided by the launcher.
if (sizes.isNullOrEmpty()) {
return
}
// Map the sizes to the desired RemoteViews
val remoteViews = RemoteViews(sizes.associateWith(::createRemoteViews))
appWidgetManager.updateAppWidget(id, remoteViews)
}
Java:
// Create the RemoteViews for the given size.
private RemoteViews createRemoteViews(SizeF size) { }
@Override
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager
appWidgetManager, int appWidgetId, Bundle newOptions) {
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions);
// Get the new sizes.
ArrayList<SizeF> sizes =
newOptions.getParcelableArrayList(AppWidgetManager.OPTION_APPWIDGET_SIZES);
// Check that the list of sizes is provided by the launcher.
if (sizes == null || sizes.isEmpty()) {
return;
}
// Map the sizes to the desired RemoteViews.
Map<SizesF, RemoteViews> viewMapping = new ArrayMap<>();
for (SizeF size : sizes) {
viewMapping.put(size, createRemoteViews(size));
}
RemoteViews remoteViews = new RemoteViews(viewMapping);
appWidgetManager.updateAppWidget(id, remoteViews);
}
Widget düzeni boyutlarıyla geriye dönük uyumluluk
Önceden,
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
,
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
,
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
ve
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
eklerini kullanarak pencere öğesinin boyut aralıklarını almak ve pencere öğesinin boyutunu tahmin etmek mümkündü, ancak bu mantık her durumda çalışmaz. Android 12'yi hedefleyen widget'lar için, daha önce açıklandığı gibi duyarlı veya tam düzenler sağlamaya geçmenizi öneririz.Uygulamanızın widget seçici deneyimini iyileştirin
Android 12, dinamik pencere öğesi önizlemeleri ve pencere öğesi açıklamaları ekleyerek uygulamanız için pencere öğesi seçici deneyimini geliştirmenize olanak tanır.
Widget seçiciye ölçeklenebilir widget önizlemeleri ekleyin
Android 12'de, widget seçicide görüntülenen widget önizlemesi, widget'ın varsayılan boyutuna ayarlanmış bir XML düzeni olarak sağlayacağınız ölçeklenebilir bir önizlemeden oluşur. Önceden, widget önizlemesi statik çizilebilir bir kaynaktı ve bazı durumlarda önizlemelerin ana ekrana eklendikten sonra widget'ları doğru bir şekilde yansıtmamasına neden oluyordu.
Ölçeklenebilir pencere öğesi önizlemelerini uygulamak için, bunun yerine bir XML düzeni sağlamak için appwidget-provider öğesinin
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
niteliğini kullanın:
CSS:
<appwidget-provider
...
android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
İdeal olarak, bu, gerçekçi varsayılan veya test değerlerine sahip gerçek pencere öğesiyle aynı düzen olmalıdır.
Ölçeklenebilir widget önizlemeleriyle geriye dönük uyumluluk
Widget seçicileri, widget'ınızın önizlemelerini göstermek üzere Android 11 veya önceki sürümlerde etkinleştirmek için önizlemeImage özniteliğini belirlemeye devam edin.
Java:
<appwidget-provider
...
android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
Widget'ınız için bir açıklama ekleyin
Android 12'de, isteğe bağlı olarak, widget seçicinin widget'ınız için görüntülenmesi için bir açıklama sağlayabilirsiniz.
Kod:
appwidget-provider
CSS:
<appwidget-provider
...
android:description="@string/my_widget_description">
</appwidget-provider>
Not: Karakter sınırlaması yoktur, ancak açıklama için gösterim ve kullanılabilir alan cihaza bağlı olarak farklılık gösterebilir. Mümkün olduğunca kısa olması önemlidir.
Widget açıklamalarıyla geriye dönük uyumluluk
Uygulamanız, Android'in önceki sürümlerinde
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
özelliğini kullanabilir, ancak widget seçicide gösterilmez.Daha yumuşak geçişleri etkinleştirin
Android 12'de başlatıcılar, bir kullanıcı uygulamanızı bir pencere öğesinden başlattığında daha yumuşak bir geçiş sağlar.
Bu geliştirilmiş geçişi etkinleştirmek için arka plan öğenizi tanımlamak için
Kod:
@android:id/background
Kod:
android.R.id.background
Java:
// Top level layout of the widget.
<LinearLayout
...
android:id="@android:id/background">
</LinearLayout>
Uyarı: Yayın trambolinlerini kullanmaktan kaçının. Android 12'de, bir uygulama, bir widget tıklamasının PendingIntent'inden başlatılmışsa, bir yayın alıcısından veya hizmetten bir etkinlik başlatabilir. Ancak yeni uygulama animasyonu, bir yayın alıcısından veya hizmetten başlatılan uygulamalar için kullanılmayacak ve bu da kötü bir kullanıcı deneyimine yol açacaktır.
Daha yumuşak geçişlerle geriye dönük uyumluluk
Uygulamanız, Android'in önceki sürümlerinde
Kod:
@android:id/background
Basitleştirilmiş RemoteViews koleksiyonlarını kullanın
Android 12,
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
) yöntemini ekler; bu, uygulamanızın bir
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
'i doldururken doğrudan bir koleksiyon üzerinden geçmesine olanak tanır. Önceden, bir ListView kullanırken, RemoteViewsFactory'yi döndürmek için bir
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
uygulamak ve bildirmek gerekiyordu.If the collection doesn’t use a constant set of layouts (in other words, if some items are only sometimes present), use
Kod:
setViewTypeCount
Here’s an example of how to implement
Kod:
simplified
Kod:
remoteView.setRemoteAdapter(
R.id.list_view,
RemoteViews.RemoteCollectionItems.Builder()
.addItem(/* id= */ ID_1, RemoteViews(...))
.addItem(/* id= */ ID_2, RemoteViews(...))
...
.setViewTypeCount(MAX_NUM_DIFFERENT_REMOTE_VIEWS_LAYOUTS)
.build()
)
Java:
remoteView.setRemoteAdapter(
R.id.list_view,
new RemoteViews.RemoteCollectionItems.Builder()
.addItem(/* id= */ ID_1, new RemoteViews(...))
.addItem(/* id= */ ID_2, new RemoteViews(...))
...
.setViewTypeCount(MAX_NUM_DIFFERENT_REMOTE_VIEWS_LAYOUTS)
.build()
);
RemoteView'lerin çalışma zamanı değişikliğini kullanın
Android 12,
Kod:
RemoteView
Kod:
RemoteView
Kod:
RemoteView
Aşağıdaki kod örneği, yeni yöntemlerden birkaçının nasıl kullanılacağını gösterir.
Kod:
// Set the colors of a progress bar at runtime.
remoteView.setColorStateList(R.id.progress, "setProgressTintList", createProgressColorStateList())
// Specify exact sizes for margins.
remoteView.setViewLayoutMargin(R.id.text, RemoteViews.MARGIN_END, 8f, TypedValue.COMPLEX_UNIT_DP)
Java:
// Set the colors of a progress bar at runtime.
remoteView.setColorStateList(R.id.progress, "setProgressTintList", createProgressColorStateList());
// Specify exact sizes for margins.
remoteView.setViewLayoutMargin(R.id.text, RemoteViews.MARGIN_END, 8f, TypedValue.COMPLEX_UNIT_DP);



