Kısmi Özel Sekmelerle Çoklu Görev

Özel Sekmeler varsayılan olarak tam pencere etkinliği olarak başlatılır. Chrome 107'den itibaren, dikey modda farklı bir başlatma yüksekliği belirtmek için kısmi özel sekmeleri kullanabilirsiniz. Böylece kullanıcılar, web içeriğini görüntülerken uygulamanızla etkileşime geçerek çoklu görev yapabilir. Kullanıcılar, araç çubuğu düğmesini yukarı sürükleyerek Özel Sekme'yi tam ekrana genişletebilir ve düğmeyi aşağı sürükleyerek ilk başlatma yüksekliğini geri yükleyebilir.

Alt sayfadaki kısmi sekmenin ekran görüntüsü
Alt sayfada kısmi özel sekme.

Chrome 120'den itibaren, büyük ekranlarda veya yatay moddaki cihazlarda, yan sekmede kısmi bir özel sekme göstermek için maksimum başlatma genişliğini belirtebilirsiniz. Bir kesme noktası ayarlayarak alt veya yan sayfada kısmi bir özel sekmenin ne zaman başlatılacağına karar verebilirsiniz.

Yan sayfadaki Kısmi Sekme'nin ekran görüntüsü
Yan sayfada kısmi özel sekme.

Ön koşul

Özel Sekmelerin bir kısmını kullanabilmek için şunları yapmanız gerekir:

Hizmet bağlantısı henüz kurulmamışsa hızlı bir başlangıç yapmak için her iki yaklaşımı da birleştirin.

Alt sayfayı yapılandırma

Bir özel sekmeyi kısmi özel sekmeye dönüştürmek için CustomTabBuilder sınıfının setInitialActivityHeightPx() yöntemini çağırarak ilk başlatma yüksekliğini piksel cinsinden tanımlayın. Kısmi özel sekme varsayılan olarak yeniden boyutlandırılabilir ancak bu davranışı devre dışı bırakmak için ACTIVITY\_HEIGHT\_FIXED parametresini iletebilirsiniz:

new CustomTabsBuilder().setInitialActivityHeightPx(
    400,
    ACTIVITY_HEIGHT_FIXED
);

Yan sayfayı yapılandırma

Yan sayfa davranışını yapılandırmak için CustomTabBuilder sınıfının setInitialActivityWidthPx() yöntemini çağırarak ilk başlatma genişliğini piksel cinsinden tanımlayın.

Kısmi özel sekme varsayılan olarak yeniden boyutlandırılabilir ancak bu davranışı devre dışı bırakmak için ACTIVITY\_HEIGHT\_FIXED parametresini iletebilirsiniz:

  CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(session)
        .setInitialActivityHeightPx(400)
        .setInitialActivityWidthPx(400);
        .setActivitySideSheetBreakpointDp(800);

Ekranın genişliği setActivitySideSheetBreakpointDp() tarafından ayarlanan kesme noktası değerinden büyükse özel sekme yan sayfa gibi davranır. Ekranın genişliği x'den yüksekse özel sekme yan sayfa gibi, aksi takdirde alt sayfa gibi davranır. Ayrılma noktası belirtilmemişse tarayıcı uygulamasını varsayılan değer 840dp olarak ayarlayın. x <600dp olarak ayarlanırsa tarayıcı uygulaması varsayılan olarak 600dp değerini kullanır.

Mevcut bir oturumla kısmi özel sekme başlatma

CustomTabsSession customTabsSession;

// ...

CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(customTabsSession)
   .setInitialActivityHeightPx(500)
    .setInitialActivityWidthPx(400);
    .setActivitySideSheetBreakpointDp(800);
   .setCloseButtonPosition(CustomTabsIntent.CLOSE_BUTTON_POSITION_END)
   // ...
   .build();

customTabsIntent.launchUrl(context, Uri.parse(url))

startActivityForResult aracılığıyla kısmi özel sekme başlatma

private ActivityResultLauncher<String> mCustomTabLauncher = registerForActivityResult(new ActivityResultContract<String, Integer>() {
    @Override
    public Integer parseResult(int statusCode, @Nullable Intent intent) {
        return statusCode;
    }

    @NonNull
    @Override
    public Intent createIntent(@NonNull Context context, String url) {
        CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(customTabsSession)
                .setInitialActivityHeightPx(500)
                .setInitialActivityWidthPx(400);
                .setActivitySideSheetBreakpointDp(800);
                .setCloseButtonPosition(CustomTabsIntent.CLOSE_BUTTON_POSITION_END)
                .setToolbarCornerRadiusDp(10);
        Intent customTabsIntent = builder.build().intent;
        customTabsIntent.setData(Uri.parse(url));
        return customTabsIntent;
    }
}, new ActivityResultCallback<Integer>() {
    @Override
    public void onActivityResult(Integer statusCode) {
       // ...
    }
});

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    Button selectButton = findViewById(R.id.select_button);
    selectButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            mCustomTabLauncher.launch(customTabsIntent.intent);
        }
    });
}

Sonraki konu: Özel sekmelerinizdeki kullanıcı etkileşimini nasıl ölçeceğinizi öğrenin.