自定义android的快速操作对话框

时间:2013-04-20 09:36:16

标签: android android-activity customization quickaction

我正在开发一个应用程序,我必须在单击按钮时显示快速操作对话框。以下是我希望如何实现的示例。

What I want to implement.

直到现在我无法弄清楚如何制作自定义快速操作对话框。但我尝试过使用一项活动和一些我接近实现的目标。这是我到目前为止所做的。

点击按钮我将意图传递给活动:

if (v.getId() == R.id.points) {
        Toast.makeText(MainActivity.this, "Clicked on points",
                Toast.LENGTH_SHORT).show();
        Intent i = new Intent(MainActivity.this, PointsActionMenu.class);
        startActivity(i);
    }

我使用styles.xml使活动透明化。

Styles.xml

<style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

实现这些东西我在屏幕上有这个UI。 Reached till here

现在,我有两个问题:

  1. 我使用了活动并设计了一个布局来满足我的需求。是 有任何简单的方法来使用快速操作对话框来实现它。一世 为此我已经完成了2-3个例子,但我无法做到 根据我的需要定制它。
  2. 据我使用活动实现,它显示在屏幕中央,我可以更改默认位置 活动到右角,如图所示。
  3. 答案中的任何一个都可以帮助我。

    任何形式的帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

我想我解决了我的问题。现在看来它是什么样的。

What I found

集成以下代码以设置其位置。

WindowManager.LayoutParams wmlp = this.getWindow().getAttributes();

    wmlp.gravity = Gravity.TOP | Gravity.LEFT;
    wmlp.x = 80; // x position
    wmlp.y = 60; // y position

答案 1 :(得分:2)

您可能想要考虑在不同设备和屏幕尺寸上发生的情况。 考虑将像素缩放到dp:

int x = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
int y = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics());

修改

wmlp.x = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
wmlp.y = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics());