如何创建QuickAction在Android对话 类似于苹果的效果
官方Twitter的Android应用程序的不断推出新的Android的UI功能和行为模式,如仪表板,搜索栏,QuickAction和行动吧。一个有趣的模式是QuickActions显示在上下文行动列表视图。这种模式实际上已经存在于QuickContact对话框/默认酒吧跟应用程序(因为机器人2.0)。
该QuickActions对话框不包含在标准的Android SDK的,所以我们必须手动创建它。起初,我并没有从理念上如何建立,所以我决定下载并阅读源代码的程序跟 机器人的Git。我发现QuickContact对话框使用私有API调用(com.android.internal.policy.PolicyManager)不存在标准的SDK。谷歌后,张贴和有关团体质疑它在堆栈溢出,我得到了它的解决方案从Qberticus(感谢名单Qberticus!)。
Qberticus的QuickActions使用简单/普通的布局,所以我必须创建一个自定义布局,因此将QuickContact样子跟应用程序或QuickActionsTwitter的应用程序。源代码基于QuickContact,我做了一个BetterPopupWindow类轻微变质对Qberticus的和扩展它来实现自定义布局。我也使它可定制的,所以图标和列表文本动作都可以定制。
以下是QuickActions演示的screenshoots:
QuickContact / Twitter的QuickActions
代码段
创建行动清单
<font style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; " mce_style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; "><font style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; " mce_style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; ">最后ActionItem图表=新ActionItem(); chart.setTitle(“图表”); chart.setIcon(getResources()getDrawable(R.drawable.chart)。); chart.setOnClickListener(新OnClickListener(){@ Override ^ 1错误的onClick (视图v){Toast.makeText(TestQuickAction.this,“图选择”,Toast.LENGTH_SHORT)显示();。}});最后ActionItem生产=新ActionItem(); production.setTitle(“产品”);生产。setIcon(getResources()getDrawable(R.drawable.production)。); production.setOnClickListener(新OnClickListener(){@ Override ^ 1错误的onClick(视图v){Toast.makeText(TestQuickAction.this,“产品选择”,烤面包。LENGTH_SHORT)显示();。}}); </font></font>
第01行:创建新的行动
线路03:设定的动作游戏
行03:设置操作图标
线路04:点击设置监听器
对话框显示QuickAction
<font style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; " mce_style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; "><font style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; " mce_style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; ">按钮btn1 =(按钮)this.findViewById(R.id.btn1); btn1.setOnClickListener(新View.OnClickListener(){@ Override ^ 1错误的onClick(视图v){QuickAction质量保证=新QuickAction(五); qa.addActionItem (图表); qa.addActionItem(生产); qa.setAnimStyle(QuickAction.ANIM_AUTO); qa.show();}}); </font></font>
线路05:创建新QuickAction对话
行07-08:添加操作项
09行:设置动画风格
011线:显示QuickAction
下载完整的源代码
Gallery3D_like QuickActions
下载完整的源代码
随着QuickActions选择的动作
<font style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; " mce_style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; "><font style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; " mce_style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 100%; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; display: inline; background-position: initial initial; background-repeat: initial initial; ">addAction.setOnClickListener(新OnClickListener(){@ Override ^ 1错误的onClick(视图v){Toast.makeText(NewQA.this,“添加”+文字,Toast.LENGTH_SHORT)显示();。mQuickAction.dismiss();}} ); </font></font>
下载完整的源代码
更多相关文章
- Android:TextView的常用功能
- Android(安卓)- 主要的UI元素
- [Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度
- Android(安卓)View视图绘制
- android之eclipse下查看android系统源代码
- android事件拦截处理机制详解
- Android(安卓)TextView文字横向自动滚动(跑马灯)
- Android获取屏幕分辨率及DisplayMetrics简介
- Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及Lis