Kısmi Özel Sekmelerle Çoklu Görev

Varsayılan olarak, Özel Sekmeler 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şimde bulunarak çoklu görev gerçekleştirebilir. Kullanıcılar, araç çubuğu tutamacını yukarı sürükleyerek Özel Sekme'yi tam ekrana genişletebilir ve tutma yerini 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 sayfadaki kısmi Özel Sekme.

Chrome 120'den itibaren yatay moddaki büyük ekranlar veya cihazlar için yan sayfada kısmi bir Özel Sekme göstermek üzere maksimum bir başlatma genişliği belirtebilirsiniz. Bir ayrılma noktası ayarlayarak, alt veya yan sayfada kısmi bir Özel Sekmenin ne zaman başlatılacağına karar verebilirsiniz.

Bir yan sayfadaki kısmi sekmenin ekran görüntüsü
Bir yan sayfada kısmi Özel Sekme.

Ön koşul

Kısmi Özel Sekmeleri kullanabilmek için aşağıdakileri yapmanız gerekir:

Hizmet bağlantısının henüz kurulamaması ihtimaline karşı hızlı bir başlatma istiyorsanız her iki yaklaşımı da kullanın.

Alt sayfayı yapılandırma

Bir Özel Sekmeyi kısmi bir Özel Sekmeye dönüştürmek için CustomTabBuilder sınıfının setInitialActivityHeightPx() yöntemini çağırarak başlangıç yüksekliğini piksel olarak tanımlayın. Varsayılan olarak, Özel Sekmenin bir bölümü yeniden boyutlandırılabilir ancak bu davranışı devre dışı bırakmak için ACTIVITY\_HEIGHT\_FIXED değerini 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 başlangıç genişliğini piksel cinsinden tanımlayın.

Varsayılan olarak, Özel Sekmenin bir bölümü yeniden boyutlandırılabilir ancak bu davranışı devre dışı bırakmak için ACTIVITY\_HEIGHT\_FIXED değerini iletebilirsiniz:

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

Ekranın genişliği setActivitySideSheetBreakpointDp() tarafından ayarlanan ayrılma noktası değerinden büyükse Özel Sekme yan sayfa gibi davranır. Ekranın genişliği x değerinden büyükse Özel Sekme, yan sayfa, aksi takdirde alt sayfa gibi davranır. Herhangi bir ayrılma noktası belirtilmezse tarayıcı uygulamasının varsayılan değer olarak ayarlanması gereken 840dp değerini ayarlayın. x, <600dp değerine ayarlanırsa tarayıcı uygulaması varsayılan olarak 600dp değerine ayarlanır.

Mevcut bir oturumu kullanarak kısmi bir Ö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 bir Özel Sekme başlatın

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

Sıradaki: Özel Sekmelerinizde kullanıcı etkileşimini nasıl ölçeceğinizi öğrenin.