Android3D游戲項目,Android 設備上可以實現 3D Touch 嗎?| 原力計劃

 2023-10-22 阅读 20 评论 0

摘要:作者?|?Android_zhu_jiang責編 | 屠敏出品 | CSDN 博客蘋果在iPhone 6s和iPhone 6s Plus開始新增了3D Touch,這個功能褒貶不一,但我覺得還是特別好用的,特別是在微信上付款、加好友、掃二維碼,或是在支付寶上付款等等場景。好用的真的是不要不要

作者?|?Android_zhu_jiang

責編 | 屠敏

出品 | CSDN 博客

蘋果在iPhone 6s和iPhone 6s Plus開始新增了3D Touch,這個功能褒貶不一,但我覺得還是特別好用的,特別是在微信上付款、加好友、掃二維碼,或是在支付寶上付款等等場景。好用的真的是不要不要的,下面是蘋果3D Touch的截圖:

這么好用的功能安卓能不模仿嗎?呸!能不實現嗎?

從安卓7.1(25)開始,系統新增了Shortcut來實現類似蘋果3D Touch的功能,實現效果如下:

蘋果的3D Touch是通過檢測手指按壓力度來判斷是否彈出,安卓硬件沒辦法統一,所以統一采用長按的方式來實現。

開始實現

Android3D游戲項目?實現呢,一共有三種方式,安卓官方是這樣來描述的:

我就用官方直譯來翻譯下湊合理解吧:

創建快捷方式

快捷方式可幫助用戶快速訪問應用程序的各個部分,從而為用戶提供特定類型的內容。

使用快捷方式交付內容的方式取決于您的用例以及快捷方式的上下文是應用程序驅動還是用戶驅動。盡管靜態快捷方式的上下文不會更改,而動態快捷方式的上下文會不斷更改,但是在兩種情況下,上下文都是由您的應用程序驅動的。如果用戶選擇自己希望您的應用向其交付內容的方式(例如固定快捷方式),則上下文由用戶定義。以下方案演示了每種快捷方式類型的一些用例:

  • 3d打印有多少設備、靜態快捷方式 最適合在用戶與應用程序互動的整個生命周期中使用一致結構鏈接到內容的應用程序。由于大多數啟動器一次 只能顯示四個快捷方式,因此靜態快捷方式對于常見活動很有用。例如,如果用戶希望以特定方式查看其日歷或電子郵件,則使用靜態快捷方式可確保他們執行例行任務的經驗是一致的。

  • 動態快捷鍵 用于上下文相關的應用程序中的操作。例如,如果您構建的游戲允許用戶在啟動時從其當前級別開始,則快捷方式將需要經常更新。使用動態快捷方式允許每次用戶清除級別時更新該快捷方式。

  • 固定的快捷方式 用于特定的,用戶驅動的操作。例如,用戶可能想要將特定網站固定到啟動器。這是有好處的,因為與使用瀏覽器的默認實例相比,它使用戶可以更快地執行自定義操作,例如一步導航到網站。

靜態快捷方式

1、在AndroidManifest.xml中找見你的啟動項Activity,在其中添加一個元素,該元素引用定義了應用程序快捷方式的資源文件:

????????<activity?android:name=".MainActivity"><intent-filter><action?android:name="android.intent.action.MAIN"?/><category?android:name="android.intent.category.LAUNCHER"?/></intent-filter><meta-data?android:name="android.app.shortcuts"android:resource="@xml/shortcuts"?/></activity>

2、上面的shortcuts文件詳情如下,其中定義了基本參數和意圖:

<?xml?version="1.0"?encoding="utf-8"?>
<shortcuts?xmlns:android="http://schemas.android.com/apk/res/android"><shortcutandroid:enabled="true"android:icon="@drawable/one"android:shortcutDisabledMessage="@string/static_disabled_message"android:shortcutId="staticId"android:shortcutLongLabel="@string/static_shortcut_long_label"android:shortcutShortLabel="@string/static_shortcut_short_label"><categories?android:name="android.shortcut.conversation"?/><intentandroid:action="android.intent.action.VIEW"android:targetClass="com.zj.shortcut.Main2Activity"android:targetPackage="com.zj.shortcut"?/></shortcut>
</shortcuts>

3D建模設備?3、上面的文件中有很多的屬性,下面來一一講解一下:

  • android:shortcutId 和 android:shortcutShortLabel 是必填值,其他都是可選的。?

  • android:shortcutId 字符串文字,表示對象對其執行操作時的快捷方式。

  • android:shortcutShortLabel 簡短的描述,描述了快捷方式的用途。盡可能將快捷方式的“簡短描述”的長度限制為10個字符,不然在手機上顯示效果可能不太好。

  • android:shortcutLongLabel ?描述該快捷方式用途的擴展短語。如果有足夠的空間,啟動器將顯示此值而不是上面的簡短的描述。如果可能,將快捷方式的“詳細描述”的長度限制為25個字符。

  • 3D技術?android:shortcutDisabledMessage ?當用戶嘗試啟動禁用的快捷方式時,在受支持的啟動器中顯示的消息。該消息應向用戶說明為什么現在禁用了快捷方式。如果android:enabled為,則此屬性的值無效true。

  • ?android:enabled ??確定用戶是否可以與受支持的啟動器中的快捷方式進行交互。默認值android:enabled是true。如果將其設置為false,則還應該設置一個android:shortcutDisabledMessage,以說明為什么禁用了快捷方式。如果您不需要提供這樣的消息,則最簡單的方法是從XML文件中完全刪除快捷方式。

  • android:icon ??啟動器在向用戶顯示快捷方式時使用 的位圖 或 自適應圖標。該值可以是圖像的路徑,也可以是包含該圖像的資源文件。盡可能使用自適應圖標來提高性能和一致性。

4、上面的字符串都定義在了res->value->string.xml中,下面是代碼:

????<string?name="static_disabled_message">測試信息</string><string?name="static_shortcut_long_label">測試長標題</string><string?name="static_shortcut_short_label">測試短標題</string>

5、下面來看一下靜態展示安卓的“3D Touch”:

動態快捷方式

3D,1、動態快捷鍵提供了指向應用程序中特定于上下文的特定操作的鏈接。這些操作可能會在您的應用使用之間發生變化,甚至在應用運行時也會發生變化。動態快捷方式的選擇包括呼叫特定人員,導航至特定位置以及從用戶的最后保存點加載游戲等等。

這是ShortcutManagerAPI的地址:https://developer.android.google.cn/reference/android/content/pm/ShortcutManager.html

  • 發布:使用 setDynamicShortcuts()重新定義動態快捷鍵的完整列表,或者使用 addDynamicShortcuts() 以增加動態快捷鍵的現有列表。

  • 更新:使用 updateShortcuts()方法。

  • 刪除:使用刪除一組動態快捷方式 removeDynamicShortcuts(),或使用 刪除所有動態快捷方式 removeAllDynamicShortcuts()。

新款安卓機3dtouch哪些機型,2、下面是動態添加快捷方式的代碼(注意要加版本注解):

@TargetApi(Build.VERSION_CODES.N_MR1)@RequiresApi(Build.VERSION_CODES.M)override?fun?onCreate(savedInstanceState:?Bundle?)?{super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val?shortcutManager?=?getSystemService<ShortcutManager>(ShortcutManager::class.java)val?shortcut?=?ShortcutInfo.Builder(this,?"id1").setShortLabel("Website").setLongLabel("Open?the?website").setIcon(Icon.createWithResource(this,?R.drawable.ic_launcher_background)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.baidu.com/"))).build()shortcutManager!!.dynamicShortcuts?=?listOf(shortcut)}

3、下面是添加完之后運行界面樣式:

固定快捷方式

在Android 8.0(API級別26)及更高版本上,可以創建固定的快捷方式。與靜態和動態快捷方式不同,固定的快捷方式在支持的啟動器中顯示為單獨的圖標。圖1顯示了這兩種快捷方式之間的區別。

1、使用 isRequestPinShortcutSupported()驗證應用程序內設備的默認啟動支持快捷鍵。

2、ShortcutInfo根據快捷方式是否已存在,以兩種方式之一創建對象:

  • 安卓有沒有3dtouch、如果快捷方式已經存在,請創建一個 ShortcutInfo僅包含現有快捷方式ID的對象。系統會自動查找并固定與快捷方式相關的所有其他信息

  • 如果要固定新的快捷方式,請創建一個ShortcutInfo對象,其中包含新快捷方式 的ID,意圖和簡短標簽。

  • 注意:因為系統會自動對固定的快捷方式執行 備份和還原,所以這些快捷方式的ID應該包含穩定,恒定的字符串或服務器端標識符,而不是本地生成的標識符,這些標識符在其他設備上可能沒有意義。

3、通過調用將快捷方式固定到設備的啟動器 requestPinShortcut()。在此過程中,可以傳入一個 PendingIntent對象,該對象僅在成功固定快捷方式后才通知應用。

注意:如果用戶不允許將快捷方式固定在啟動器上,則您的應用不會收到回調。固定快捷方式后,可以使用 updateShortcuts()方法更新其內容 。

支持3dtouch的安卓手機、4、下面是創建固定快捷方式的代碼:

@SuppressLint("NewApi")private?fun?initShortcut()?{val?shortcutManager?=?getSystemService(ShortcutManager::class.java)if?(shortcutManager!!.isRequestPinShortcutSupported)?{val?pinShortcutInfo??=?ShortcutInfo.Builder(this,?"id1").setShortLabel("Website").setLongLabel("Open?the?website").setIcon(Icon.createWithResource(this,?R.drawable.ic_launcher_background)).setIntent(Intent(Intent.ACTION_VIEW,Uri.parse("https://www.baidu.com/"))).build()val?pinnedShortcutCallbackIntent?=?shortcutManager.createShortcutResultIntent(pinShortcutInfo)val?successCallback?=?PendingIntent.getBroadcast(this,?/*?request?code?*/?0,pinnedShortcutCallbackIntent,?/*?flags?*/?0)shortcutManager.requestPinShortcut(pinShortcutInfo,successCallback.intentSender)}}

5、運行結果如下:

版權聲明:本文為CSDN博主「Android_zhu_jiang」的原創文章,僅用于技術交流,分享心得。

想為博主點贊?

想要請教博主?

掃描下方二維碼,快速獲取與博主直面溝通的方式吧!

熱 文?推 薦?

?雷軍為什么要挖常程?

達摩院 2020 預測:量子霸權指日可待!

安卓有3dtouch嗎?GitHub Action 有風險?!

?達摩院十大科技趨勢發布:2020 非同小可!

?騙了馬云 10 億被罵 4 年后,院士王堅留下 4 條人生啟示

?阿里達摩院2020趨勢第一彈:感知智能的“天花板”和認知智能的“野望”

?你真的懂云計算嗎?

帶3dtouch的安卓手機??萬字長文回望2019:影響區塊鏈行業發展的9大事件

點擊閱讀原文,查看博主精彩分享。

你點的每個“在看”,我都認真當成了喜歡

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/162810.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息