如何创建一个按钮,它将停留在所有窗口的顶部,并可以点击打开另一个类似的android覆盖活动?

如何创建一个按钮,它将停留在所有窗口的顶部,并可以点击打开另一个类似的android覆盖活动?,android,overlay,system,transparency,Android,Overlay,System,Transparency,我是android编程新手。我使用系统覆盖和服务创建了一个按钮。现在我想要的是点击那个按钮,然后得到另一个包含5个以上按钮的覆盖窗口。但问题是,该按钮不采取任何点击,不允许我打开另一个覆盖窗口。下面是我用来绘制按钮的xml代码-- 有什么想法吗,伙计们?我的时间不多了。请最好使用片段进行此操作使用片段创建视图,在片段上方覆盖一个按钮。您能用一些详细代码详细说明这个概念吗?@SIVAKUMAR J.我的点子快用完了。如何创建一个片段视图以覆盖所有其他窗口?你知道,我是新手。你能给我看一些代码的例子

我是android编程新手。我使用系统覆盖和服务创建了一个按钮。现在我想要的是点击那个按钮,然后得到另一个包含5个以上按钮的覆盖窗口。但问题是,该按钮不采取任何点击,不允许我打开另一个覆盖窗口。下面是我用来绘制按钮的xml代码--


有什么想法吗,伙计们?我的时间不多了。请

最好使用片段进行此操作

使用片段创建视图,在片段上方覆盖一个按钮。

您能用一些详细代码详细说明这个概念吗?@SIVAKUMAR J.我的点子快用完了。如何创建一个片段视图以覆盖所有其他窗口?你知道,我是新手。你能给我看一些代码的例子吗?@gandharva。我不能理解这个概念。我需要知道如何实现这个概念。请,任何教程也可以帮助。我可以解释这个概念。假设您有一个根布局,比如说相对布局,它包含一个框架布局(具有全宽和全高)和一个覆盖在右上角的按钮。现在在Activity类中,您掌握了FrameLayout并将其替换为fragment1。如果需要更改屏幕,请将fragment1替换为fragment2。等等如果我想让按钮像屏幕上的facebook聊天图标一样移动,会发生什么?你能给我一个建议吗?@gandharvaI知道有一个类在这种情况下会很有帮助,它是ViewDragHelper。你能给我提供一个示例链接,我可以从中清楚地理解它的用法吗?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:id="@+id/l1"
android:layout_height="fill_parent"
tools:context=".OverlayActivity" >

<Button
    android:id="@+id/mainButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAlignment="center" 
    android:gravity="center_vertical"
    android:layout_alignParentRight="true"
    android:layout_centerInParent="true"
    android:clickable="true"
    android:visibility="visible"
    android:focusable="true">

</Button>
    @Override
public void onCreate() {
    super.onCreate();
    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    View oView = layoutInflater.inflate(R.layout.activity_overlay, null);
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            0 | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);
             WindowManager.LayoutParams.TYPE_PHONE,
             WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
             PixelFormat.TRANSLUCENT);
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    wm.addView(oView, params);
    Button button = (Button)oView.findViewById(R.id.mainButton);


    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

           Toast.makeText(OverlayService.this, "GotCha!!! ", Toast.LENGTH_LONG).show();

        }

    });
    ViewGroup vg = (ViewGroup)oView.findViewById(R.id.l1);
    final Display  metrics = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    vg.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
       switch(event.getActionMasked()){

            case MotionEvent.ACTION_MOVE:
             int x = (int)event.getX() - offset_x;
             int y = (int)event.getY() - offset_y;


             int w = metrics.getWidth()-100;
             int h = metrics.getHeight()-100;

             if(x > w){
                x = w;
             }
             if(y > h){
                y = h;
             }
             LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
             new ViewGroup.MarginLayoutParams(
             LinearLayout.LayoutParams.WRAP_CONTENT,
             LinearLayout.LayoutParams.WRAP_CONTENT));                
             lp.setMargins(x, y, 0, 0);
             selected_item.setLayoutParams(lp);
             break;

             default:
             break;
        }
        return true;
    }
});
    button.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
       switch(event.getActionMasked()){
            case MotionEvent.ACTION_DOWN:
                offset_x = (int)event.getX();
                offset_y = (int)event.getY();
                selected_item = v;
                break;
                default:
                    break;
       }
       return false;
    }
    });
}