3D Touch, Android cihazlara uygulanabilir mi? | Güç Projesi

Yazar | Android_zhu_jiang

Editör | Tu Min

Üretildi | CSDN Blogu

Apple, iPhone 6s ve iPhone 6s Plus'a 3D Touch ekledi. Bu özellik karışık incelemeler içeriyor, ancak bence yine de kullanımı çok kolay, özellikle WeChat Ödeme yapın, arkadaş ekleyin, QR kodunu tarayın veya Alipay'de ödeme yapın vb. Kullanımı kolay olanlar gerçekten gerekli değildir. Aşağıda Apple'ın 3D Touch'ının ekran görüntüsü verilmiştir:

Android böyle kullanışlı bir işlevi taklit edemez mi? Pooh! Olamaz mı?

Android 7.1 (25) sürümünden başlayarak, Apple'ın 3D Touch'ına benzer bir işlev elde etmek için sisteme Kısayol eklendi. Etki aşağıdaki gibidir:

Apple'ın 3D Touch'ı, parmağın basıncını algılayarak açılıp açılmayacağını belirlemek içindir, Android donanımı bunu yapmaz Yasal sistem Bir, yani uzun basışla fark edilir.

Başarmaya başla

Bunu başarmanın üç yolu var. Resmi Android bunu şu şekilde açıklıyor:

Resmi birebir çeviriyi çevirmek ve anlamak için kullanacağım:

Kısayol oluştur

Kısayollar, kullanıcılara belirli içerik türleri sağlamak için kullanıcıların uygulamanın çeşitli bölümlerine hızlı bir şekilde erişmesine yardımcı olabilir.

İçeriği iletmek için kısayolları kullanma şekliniz, kullanım durumunuza ve kısayol bağlamının uygulama odaklı mı yoksa kullanıcı odaklı mı olduğuna bağlıdır. Statik kısayolların bağlamı değişmese ve dinamik kısayolların bağlamı sürekli değişse de, her iki durumda da bağlam, uygulamanız tarafından yönlendirilir. Kullanıcılar, uygulamanızın içeriği kendilerine nasıl teslim etmesini istediklerini seçerlerse (sabit bir kısayol gibi), bağlam kullanıcı tanımlıdır. Aşağıdaki senaryolar, her kısayol türü için bazı kullanım durumlarını gösterir:

  • Statik kısayollar, en çok, uygulamayla kullanıcı etkileşiminin yaşam döngüsü boyunca içeriğe bağlanmak için tutarlı bir yapı kullanan uygulamalar için uygundur. Çoğu başlatıcı aynı anda yalnızca dört kısayol görüntüleyebildiğinden, statik kısayollar genel etkinlikler için kullanışlıdır. Örneğin, kullanıcılar takvimlerini veya e-postalarını belirli bir şekilde görüntülemek isterlerse, statik kısayolların kullanılması, rutin görevleri gerçekleştirme deneyimlerinin tutarlı olmasını sağlayabilir.

  • Bağlama duyarlı uygulamalardaki işlemler için dinamik kısayol tuşları kullanılır. Örneğin, kullanıcıların başlangıçta mevcut seviyelerinden başlamalarına izin veren bir oyun oluşturursanız, kısayolların sık sık güncellenmesi gerekecektir. Dinamik bir kısayol kullanmak, kullanıcı seviyeyi her sildiğinde kısayolun güncellenmesini sağlar.

  • Sabit kısayollar, belirli, kullanıcı tarafından yönlendirilen işlemler için kullanılır. Örneğin, kullanıcı belirli bir web sitesini başlatıcıya sabitlemek isteyebilir. Bu yararlıdır çünkü kullanıcıların bir web sitesinde tek adımda gezinme gibi özel eylemleri tarayıcının varsayılan örneğini kullanmaktan daha hızlı gerçekleştirmelerine olanak tanır.

Statik kısayol

1. AndroidManifest.xml'de başlangıç öğenizin Etkinliğini bulun ve buna, uygulama kısayolunu tanımlayan kaynak dosyasına başvuran bir öğe ekleyin:

< android etkinliği: name = ". MainActivity" > < amaç filtresi > < eylem android: name = "android.intent.action.MAIN" / > < kategori android: name = "android.intent.category.LAUNCHER" / > < / amaç-filtresi > < meta-data android: name = "android.app.shortcuts" android: resource = "@ xml / kısayollar" / > < /aktivite >

2. Yukarıdaki kısayol dosyasının ayrıntıları, temel parametreleri ve amacı tanımlayan aşağıdaki gibidir:

< ? xml version = "1.0" encoding = "utf-8"? > < kısayollar xmlns: android = " .com / apk / res / android " > < kısayol android: enabled = "true" android: icon = "@ drawable / one" android: kısayolDisabledMessage = "@ string / static_disabled_message" android: kısayolId = "staticId" android: kısayolLongLabel = "@ string / static_shortcut_long_label" android: kısayolShortLabel = "@ string / static_shortcut_short_label" > < kategoriler android: ad = "android.shortcut.conversation" / > < niyet android: action = "android.intent.action.VIEW" android: targetClass = "com.zj.shortcut.Main2Activity" android: targetPackage = "com.zj.shortcut" / > < /kısayol > < / kısayollar >

3. Aşağıdaki dosyada pek çok öznitelik vardır. Tek tek Açıklamak:

  • android: kısayolId ve android: kısayolShortLabel gerekli değerlerdir, diğerleri isteğe bağlıdır.

  • android: kısayolId Nesne üzerinde işlemler gerçekleştirdiğinde kısayolu temsil eden değişmez dize.

  • android: kısayolShortLabel Kısayolun amacını açıklayan kısa bir açıklama. Kısayolun "kısa açıklamasının" uzunluğunu 10 karakterle sınırlamaya çalışın, aksi takdirde telefondaki ekran etkisi çok iyi olmayabilir.

  • android: kısayolLongLabel Kısayolun amacını açıklayan genişletilmiş bir ifade. Yeterli alan varsa, başlatıcı yukarıdaki kısa açıklama yerine bu değeri gösterecektir. Mümkünse, kısayolun "ayrıntılı açıklamasının" uzunluğunu 25 karakterle sınırlayın.

  • android: kısayolDisabledMessage Kullanıcı devre dışı bırakılmış bir kısayolu başlatmaya çalıştığında desteklenen bir başlatıcıda görüntülenen mesaj. Mesaj, kullanıcıya kısayolun neden devre dışı bırakıldığını açıklamalıdır. Android: enabled ise, bu özniteliğin değeri geçersiz true.

  • android: enabled, kullanıcının desteklenen başlatıcılardaki kısayollarla etkileşime girip giremeyeceğini belirler. Varsayılan değer android: enabled, true. Bunu yanlış olarak ayarlarsanız, kısayolun neden devre dışı bırakıldığını açıklamak için bir android: kısayolDisabledMessage da ayarlamanız gerekir. Böyle bir mesaj vermeniz gerekmiyorsa, en kolay yol kısayolu XML dosyasından tamamen kaldırmaktır.

  • Android: simge başlatıcısı tarafından kullanıcılara kısayollar görüntülenirken kullanılan bitmap veya uyarlanabilir simge. Değer, görüntünün yolu veya görüntüyü içeren kaynak dosyası olabilir. Performansı ve tutarlılığı artırmak için mümkün olduğunda uyarlanabilir simgeleri kullanın.

4. Yukarıdaki dizelerin tümü res- > değer- > String.xml'de kod şu şekildedir:

< string name = "static_disabled_message" > Test bilgileri < / string > < string name = "static_shortcut_long_label" > Uzun başlığı test edin < / string > < string name = "static_shortcut_short_label" > Kısa başlığı test edin < / string >

5. Androidin "3D Touch" özelliğinin statik ekranına bir göz atalım:

Dinamik kısayol

1. Dinamik kısayol tuşları, içeriğe özgü uygulamadaki belirli işlemlere bağlantılar sağlar. Bu işlemler uygulamanızın kullanımları arasında değişebilir ve hatta uygulama çalışırken değişebilir. Dinamik kısayolların seçimi, belirli bir kişiyi aramayı, belirli bir konuma gitmeyi, oyunu kullanıcının son kaydettiği noktadan yüklemeyi vb. İçerir.

Bu, ShortcutManagerAPI'nin adresidir: https://developer.android.google.cn/reference/android/content/pm/ShortcutManager.html

  • Sürüm: Dinamik kısayolların tam listesini yeniden tanımlamak için setDynamicShortcuts'ı kullanın veya bir gg Dinamik kısayol tuşlarının mevcut listesini artırmak için Dinamik Kısayollar.

  • Güncelleme: updateShortcuts yöntemini kullanın.

  • Sil: Bir grup dinamik kısayolu silmek için removeDynamicShortcuts'ı veya tüm dinamik kısayolları silmek için removeAllDynamicShortcuts'ı kullanın.

2. Aşağıdakiler, dinamik olarak kısayol eklemek için koddur (sürüm ek açıklamaları eklemeniz gerektiğini unutmayın):

@TargetApi (Build.VERSION_CODES.N_MR1) @RequiresApi (Build.VERSION_CODES.M) eğlenceyi geçersiz kıl (SavedInstanceState: Bundle?) { super.onCreate (SavedInstanceState) setContentView (R.layout.activity_main) val kısayolManager = getSystemService < ShortcutManager > (ShortcutManager :: class.java) val kısayolu = ShortcutInfo.Builder (bu, "id1") .setShortLabel ("Web Sitesi") .setLongLabel ("Web sitesini açın") .setIcon (Icon.createWithResource (this, R.drawable.ic_launcher_background)) .setIntent ( Amaç ( Intent.ACTION_VIEW, Uri.parse ("https: // www .baidu .com / ")) ) .inşa etmek kısayolManager !!. dynamicShortcuts = listOf (kısayol) }

3. Aşağıdakiler, ekledikten sonra çalışan arayüz stilidir:

Sabit kısayol

Android 8.0 (API seviyesi 26) ve üzeri sürümlerde sabit kısayollar oluşturulabilir. Statik ve dinamik kısayolların aksine, sabit kısayollar, desteklenen başlatıcılarda ayrı simgeler olarak görüntülenir. Şekil 1, bu iki kısayol arasındaki farkı göstermektedir.

1. Uygulamadaki aygıtın varsayılan başlatma desteği kısayol tuşlarını doğrulamak için isRequestPinShortcutSupported kullanın.

2. ShortcutInfo, kısayolun mevcut olup olmadığına bağlı olarak iki yoldan biriyle bir nesne oluşturur:

  • Kısayol zaten mevcutsa, yalnızca mevcut kısayolun kimliğini içeren bir ShortcutInfo nesnesi oluşturun. Sistem, kısayolla ilgili diğer tüm bilgileri otomatik olarak bulacak ve düzeltecektir.

  • Yeni bir kısayolu düzeltmek istiyorsanız, yeni kısayolun kimliğini, amacını ve kısa etiketini içeren bir ShortcutInfo nesnesi oluşturun.

  • Not: Sistem sabit kısayolları otomatik olarak yedekleyip geri yükleyeceğinden, bu kısayolların kimlikleri, diğer cihazlarda bulunan yerel olarak oluşturulmuş tanımlayıcılar yerine kararlı, sabit dizeler veya sunucu tarafı tanımlayıcılar içermelidir. Mantıklı gelmeyebilir.

3. Arayarak cihazın başlatıcısı requestPinShortcut kısayolunu sabitleyin. Bu işlemde, yalnızca kısayol başarıyla düzeltildikten sonra uygulamaya bildirimde bulunacak olan bir PendingIntent nesnesini iletebilirsiniz.

Not: Kullanıcı, kısayolun başlatıcıya sabitlenmesine izin vermezse, uygulamanız geri aranmaz. Kısayolu düzelttikten sonra, içeriğini güncellemek için updateShortcuts yöntemini kullanabilirsiniz.

4. Aşağıda sabit bir kısayol oluşturma kodu verilmiştir:

@SuppressLint ("NewApi") özel eğlence initShortcut { val kısayolManager = getSystemService (ShortcutManager :: class.java) eğer (kısayolManager !!. isRequestPinShortcutSupported) { val pinShortcutInfo = ShortcutInfo.Builder (bu, "id1") .setShortLabel ("Web Sitesi") .setLongLabel ("Web sitesini açın") .setIcon (Icon.createWithResource (this, R.drawable.ic_launcher_background)) .setIntent ( Amaç ( Intent.ACTION_VIEW, Uri.parse ("https: // www .baidu .com / ")) ) .inşa etmek val pinnedShortcutCallbackIntent = kısayolManager.createShortcutResultIntent (pinShortcutInfo) val successCallback = PendingIntent.getBroadcast (bu, / * istek kodu * / 0, pinnedShortcutCallbackIntent, / * bayraklar * / 0) kısayolManager.requestPinShortcut (pinShortcutInfo, successCallback.intentSender) } }

5. Çalışan sonuçlar aşağıdaki gibidir:

Telif hakkı bildirimi: Bu makale, CSDN blogger "Android_zhu_jiang" tarafından yazılan ve yalnızca teknik alışverişler ve deneyimleri paylaşmak için kullanılan orijinal bir makaledir.

IoT çözümünüzü üç zorluk öldürecek
önceki
Amazon'a hükmet, insanları paniğe mi sokacaksın?
Sonraki
Performansı 10 kat artırın, Taobao ve Tmall'ın arkasındaki görüntü depolamasının çift on bir büyük akımı nasıl tutabileceğini ortaya çıkarın? | Çin'in BT teknolojisinin gelişimiyle ilgili sorular
Bilmediğiniz web performans optimizasyonu | Kuvvet Projesi
11 yıllık sanat çalışmalarında matematiğe "dönüştü", nasıl Ant Financial'ın teknik gücünün bir üyesi oldu?
Xiaomi, cihazın Google tarafından yasaklandığına yanıt verdi; Apple China, 2019 iPad'in fiyat indirimini açıkladı; Wine 5.0-rc4 çıktı | Geek Manşet
İdeal akıllı ev
Li Ka-shing sonunda başardı! Baba ve oğul birlikte "düşüş satın alıyor", hisse senedi fiyatları hemen yükseldi
Jinan, yeniden yerleştirilecek ve birleştirilecek 1134 köy ve 383 köyü içeren şehir köylerinin yerleşim planını yayınladı.
Tarım makineleri spiral dişleri uyluklara nüfuz eder Weifang Yangın Acil Kurtarma
"Spring Warm Xiaoxiang, Hi You Huaihua" Kültür Turu Fei Huimin canlı yayın etkinliği 3 Nisan'da düzenlendi
Xintian: Mor yapraklar ve yeşil şeftali bahar esintisinde içilir
Salgının dönüm noktası yaklaşıyor, ABD hisse senetleri panoda yükseliyor, Dow 1.600 puandan fazla yükseldi
Ulusal Gelişmiş Su Kontrol Bölgesi olarak değerlendirilen Guangzhou Baiyun modu, mega şehirlerde su kontrolünün yolunu araştırıyor
To Top