Kısmi Özel Sekmelerle Çoklu Görev

Özel Sekmeler varsayılan olarak tam pencere etkinliği olarak başlatılır. Chrome'da başlatılıyor 107'de farklı bir başlatma yüksekliği belirtmek için kısmi Özel Sekmeler kullanıcıların uygulamanızla etkileşimde bulunurken aynı anda birden fazla iş yapmasına olanak tanıyan dikey mod web içeriğini görüntüleme. Kullanıcılar, sürükleyerek Özel Sekme'yi tam ekrana genişletebilir tutma yerini yukarı doğru hareket ettirebilir ve tutma yeridir.

Alt sayfadaki Kısmi Sekme ekran görüntüsü
Alt sayfada kısmi Özel Sekme.

Büyük ekranlarda veya yatay moddaki cihazlarda, Chrome 120 sürümünden itibaren bir tarafta kısmi Özel Sekme göstermek için maksimum başlatma genişliği belirtilebilir sayfasına gitmelidir. Bir mola noktası belirleyerek, kısmi bir Özel öğenin ne zaman başlatılacağına karar verebilirsiniz. Alt veya yan sayfada sekme tuşuna basın.

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

Ön koşul

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

Hizmetin kullanıma sunulması ihtimaline karşı hızlı bir başlatma istiyorsanız her iki yaklaşımı da birleştirin. bağlantısı henüz kurulamadı.

Alt sayfayı yapılandırma

Bir Özel Sekmeyi kısmi bir Özel Sekmeye dönüştürmek için ilk başlatma yüksekliğini tanımlayın CustomTabBuilder sınıfını çağırarak piksel cinsinden setInitialActivityHeightPx() yöntemidir. Varsayılan olarak, kısmi Özel Sekme yeniden boyutlandırılabilir, ancak ACTIVITY\_HEIGHT\_FIXED şu davranışı devre dışı bırakmak için:

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

Yan sayfayı yapılandırma

Yan sayfa davranışını yapılandırmak için başlangıçtaki başlatma genişliğini piksel cinsinden belirleyin: CustomTabBuilder sınıfına çağrı setInitialActivityWidthPx() yöntemidir.

Varsayılan olarak, kısmi Özel Sekme yeniden boyutlandırılabilir, ancak ACTIVITY\_HEIGHT\_FIXED şu davranışı devre dışı bırakmak için:

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

Ekran genişliği ayrılma noktası değeri setActivitySideSheetBreakpointDp() fonksiyonunda kullanılmaktadır. Ekranın genişliği x değerinden yüksek olduğunda Özel Sekme, kenar gibi davranır. Aksi takdirde bir alt sayfa olarak davranır. Kesme noktası yoksa belirtildiğinde, tarayıcı uygulamasının varsayılan değeri 840dp olarak ayarlanmalıdır. x, <600dp değerine ayarlanırsa tarayıcı uygulaması varsayılan olarak 600dp.

Mevcut bir oturumla kısmi bir Özel Sekme başlatın

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 içerik: Özel Sekmelerinizde kullanıcı etkileşimini nasıl ölçeceğinizi öğrenin.