亚洲国产成人精品久久_欧美日韩国产综合一区二区_亚洲精品理论电影_色综合久久中文字幕

Android設(shè)備上可以實(shí)現(xiàn)3DTouch嗎?|原力計(jì)劃

放大字體  縮小字體 發(fā)布日期:2020-01-05  來源:來自互聯(lián)網(wǎng)  作者:來自互聯(lián)網(wǎng)  瀏覽次數(shù):501
導(dǎo)讀

使用快捷方式交付內(nèi)容的方式取決于您的用例以及快捷方式的上下文是應(yīng)用程序驅(qū)動(dòng)還是用戶驅(qū)動(dòng)。 1、在AndroidManifest.xml中找見你的啟動(dòng)項(xiàng)Activity,在其中添加一個(gè)元素,該元素引用…

作者 | Android_zhu_jiang

責(zé)編 | 屠敏

出品 | CSDN 博客

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

這么好用的功能安卓能不模仿嗎?呸!能不實(shí)現(xiàn)嗎?

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

開始實(shí)現(xiàn)

實(shí)現(xiàn)呢,一共有三種方式,安卓官方是這樣來描述的:

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

創(chuàng)建快捷方式

快捷方式可幫助用戶快速訪問應(yīng)用程序的各個(gè)部分,從而為用戶提供特定類型的內(nèi)容。

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

  • 靜態(tài)快捷方式 最適合在用戶與應(yīng)用程序互動(dòng)的整個(gè)生命周期中使用一致結(jié)構(gòu)鏈接到內(nèi)容的應(yīng)用程序。 由于大多數(shù)啟動(dòng)器一次 只能顯示四個(gè)快捷方式,因此靜態(tài)快捷方式對于常見活動(dòng)很有用。例如,如果用戶希望以特定方式查看其日歷或電子郵件,則使用靜態(tài)快捷方式可確保他們執(zhí)行例行任務(wù)的經(jīng)驗(yàn)是一致的。
  • 動(dòng)態(tài)快捷鍵 用于上下文相關(guān)的應(yīng)用程序中的操作。 例如,如果您構(gòu)建的游戲允許用戶在啟動(dòng)時(shí)從其當(dāng)前級別開始,則快捷方式將需要經(jīng)常更新。使用動(dòng)態(tài)快捷方式允許每次用戶清除級別時(shí)更新該快捷方式。
  • 固定的快捷方式 用于特定的,用戶驅(qū)動(dòng)的操作。 例如,用戶可能想要將特定網(wǎng)站固定到啟動(dòng)器。這是有好處的,因?yàn)榕c使用瀏覽器的默認(rèn)實(shí)例相比,它使用戶可以更快地執(zhí)行自定義操作,例如一步導(dǎo)航到網(wǎng)站。

靜態(tài)快捷方式

1、在AndroidManifest.xml中找見你的啟動(dòng)項(xiàng)Activity,在其中添加一個(gè)元素,該元素引用定義了應(yīng)用程序快捷方式的資源文件:

< activityandroid:name= ".MainActivity">

< intent-filter>

< actionandroid:name= "android.intent.action.MAIN"/>

< categoryandroid:name= "android.intent.category.LAUNCHER"/>

</ intent-filter>

< meta-dataandroid:name= "android.app.shortcuts"

android:resource= "@xml/shortcuts"/>

</ activity>

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

<?xml version="1.0" encoding="utf-8"?>

< shortcutsxmlns:android= "schemas.android/apk/res/android">

< shortcut

android: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">

< categoriesandroid:name= "android.shortcut.conversation"/>

< intent

android:action= "android.intent.action.VIEW"

android:targetClass= "com.zj.shortcut.Main2Activity"

android:targetPackage= "com.zj.shortcut"/>

</ shortcut>

</ shortcuts>

3、上面的文件中有很多的屬性,下面來一一講解一下:

  • android:shortcutId 和 android:shortcutShortLabel 是必填值,其他都是可選的。
  • android:shortcutId 字符串文字,表示對象對其執(zhí)行操作時(shí)的快捷方式。
  • android:shortcutShortLabel 簡短的描述,描述了快捷方式的用途。盡可能將快捷方式的“簡短描述”的長度限制為10個(gè)字符,不然在手機(jī)上顯示效果可能不太好。
  • android:shortcutLongLabel 描述該快捷方式用途的擴(kuò)展短語。如果有足夠的空間,啟動(dòng)器將顯示此值而不是上面的簡短的描述。如果可能,將快捷方式的“詳細(xì)描述”的長度限制為25個(gè)字符。
  • android:shortcutDisabledMessage 當(dāng)用戶嘗試啟動(dòng)禁用的快捷方式時(shí),在受支持的啟動(dòng)器中顯示的消息。該消息應(yīng)向用戶說明為什么現(xiàn)在禁用了快捷方式。如果android:enabled為,則此屬性的值無效true。
  • android:enabled 確定用戶是否可以與受支持的啟動(dòng)器中的快捷方式進(jìn)行交互。默認(rèn)值android:enabled是true。如果將其設(shè)置為false,則還應(yīng)該設(shè)置一個(gè)android:shortcutDisabledMessage,以說明為什么禁用了快捷方式。如果您不需要提供這樣的消息,則最簡單的方法是從XML文件中完全刪除快捷方式。
  • android:icon 啟動(dòng)器在向用戶顯示快捷方式時(shí)使用 的位圖 或 自適應(yīng)圖標(biāo)。該值可以是圖像的路徑,也可以是包含該圖像的資源文件。盡可能使用自適應(yīng)圖標(biāo)來提高性能和一致性。

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

< stringname= "static_disabled_message">測試信息</ string>

< stringname= "static_shortcut_long_label">測試長標(biāo)題</ string>

< stringname= "static_shortcut_short_label">測試短標(biāo)題</ string>

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

動(dòng)態(tài)快捷方式

1、動(dòng)態(tài)快捷鍵提供了指向應(yīng)用程序中特定于上下文的特定操作的鏈接。這些操作可能會(huì)在您的應(yīng)用使用之間發(fā)生變化,甚至在應(yīng)用運(yùn)行時(shí)也會(huì)發(fā)生變化。動(dòng)態(tài)快捷方式的選擇包括呼叫特定人員,導(dǎo)航至特定位置以及從用戶的最后保存點(diǎn)加載游戲等等。

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

  • 發(fā)布:使用 setDynamicShortcuts重新定義動(dòng)態(tài)快捷鍵的完整列表,或者使用 addDynamicShortcuts 以增加動(dòng)態(tài)快捷鍵的現(xiàn)有列表。
  • 更新:使用 updateShortcuts方法。
  • 刪除:使用刪除一組動(dòng)態(tài)快捷方式 removeDynamicShortcuts,或使用 刪除所有動(dòng)態(tài)快捷方式 removeAllDynamicShortcuts。

2、下面是動(dòng)態(tài)添加快捷方式的代碼(注意要加版本注解):

@TargetApi(Build.VERSION_CODES.N_MR1)

@RequiresApi(Build.VERSION_CODES.M)

overridefunonCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

valshortcutManager = getSystemService<ShortcutManager>(ShortcutManager:: class. java)

valshortcut = 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://baidu/"))

)

.build

shortcutManager!!.dynamicShortcuts = listOf(shortcut)

}

3、下面是添加完之后運(yùn)行界面樣式:

固定快捷方式

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

1、使用 isRequestPinShortcutSupported驗(yàn)證應(yīng)用程序內(nèi)設(shè)備的默認(rèn)啟動(dòng)支持快捷鍵。

2、ShortcutInfo根據(jù)快捷方式是否已存在,以兩種方式之一創(chuàng)建對象:

  • 如果快捷方式已經(jīng)存在,請創(chuàng)建一個(gè) ShortcutInfo僅包含現(xiàn)有快捷方式ID的對象。系統(tǒng)會(huì)自動(dòng)查找并固定與快捷方式相關(guān)的所有其他信息
  • 如果要固定新的快捷方式,請創(chuàng)建一個(gè)ShortcutInfo對象,其中包含新快捷方式 的ID,意圖和簡短標(biāo)簽。
  • 注意:因?yàn)橄到y(tǒng)會(huì)自動(dòng)對固定的快捷方式執(zhí)行 備份和還原,所以這些快捷方式的ID應(yīng)該包含穩(wěn)定,恒定的字符串或服務(wù)器端標(biāo)識符,而不是本地生成的標(biāo)識符,這些標(biāo)識符在其他設(shè)備上可能沒有意義。

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

注意:如果用戶不允許將快捷方式固定在啟動(dòng)器上,則您的應(yīng)用不會(huì)收到回調(diào)。固定快捷方式后,可以使用 updateShortcuts方法更新其內(nèi)容 。

4、下面是創(chuàng)建固定快捷方式的代碼:

@SuppressLint( "NewApi")

privatefuninitShortcut{

valshortcutManager = getSystemService(ShortcutManager:: class. java)

if(shortcutManager!!.isRequestPinShortcutSupported) {

valpinShortcutInfo = 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://baidu/"))

)

.build

valpinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(pinShortcutInfo)

valsuccessCallback = PendingIntent.getBroadcast( this, 0,

pinnedShortcutCallbackIntent, 0)

shortcutManager.requestPinShortcut(pinShortcutInfo,

successCallback.intentSender)

}

}

5、運(yùn)行結(jié)果如下:

版權(quán)聲明:本文為CSDN博主「Android_zhu_jiang」的原創(chuàng)文章,僅用于技術(shù)交流,分享心得。

想為博主點(diǎn)贊?

想要請教博主?

快速 獲取與博主直面溝通的方式吧!

 
 
免責(zé)聲明
本文為會(huì)員免費(fèi)發(fā)布,僅代表發(fā)布者個(gè)人觀點(diǎn),本站未對其內(nèi)容進(jìn)行核實(shí),請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時(shí)聯(lián)系我們刪除處理。
 
 
主站蜘蛛池模板: 国产欧美日韩亚洲| 婷婷亚洲婷婷综合色香五月| 欧美精品一区在线| 日韩在线视频一区| 欧美日韩精品不卡| 国产精品麻豆免费版| 99亚洲精品视频| 久久综合婷婷综合| 国产午夜精品一区| 亚洲一区二区三区乱码aⅴ| 不卡视频一区| 日本精品视频一区| 国产精品亚洲网站| 日本三级中国三级99人妇网站| 国产日韩在线亚洲字幕中文 | 久久精品午夜福利| 91精品国产网站| 精品国产乱码久久久久| 视频一区不卡| 不卡av在线网站| 精品午夜一区二区| 日韩免费一区二区三区| 国产精品二区在线观看| 免费无遮挡无码永久视频| 国产精品久久久久久久7电影 | 国产日本欧美在线观看| 日日噜噜噜噜夜夜爽亚洲精品| 国产精品免费在线| 精品国产aⅴ麻豆| 美女在线免费视频| 日韩精品视频在线观看视频| 91精品在线国产| 99在线看视频| 97久久精品国产| y97精品国产97久久久久久| 久久久久99精品久久久久| 秋霞久久久久久一区二区| 日韩精品欧美在线| 欧美在线一级va免费观看| 日本免费一区二区三区视频观看| 色综合久久天天综线观看|