拖动SlidingDrawer时调用活动

时间:2011-03-31 11:30:57

标签: android android-activity slidingdrawer

我需要使用由activityGridView组成的SlidingDrawer制作应用。

我已经这样做了,但现在我的问题是,每当拖动SlidingDrawer而另一半将是我之前的activity时,我需要为屏幕的一半带来一个活动拖回SlidingDrawer,然后应关闭Activity

这是否可以在没有任何冲突的情况下处理屏幕中的活动,如果可能,我应该如何设计这些活动?

2 个答案:

答案 0 :(得分:1)

您无法将Activity放入SlidingDrawer。您可以将View放入SlidingDrawer

答案 1 :(得分:0)

  1. Activity的所有者SlidingDrawer应该延伸ActivityGroup
  2. 获取目标活动的视图,添加SlidingDrawer内容的视图。代码如下:

    private void initSlidingDrawerContent() {
        mTestContent.removeAllViews();
        //View view = LayoutInflater.from(this).inflate(R.layout.act_test, null);
        View view = activityToView(this, new Intent(MainActivity.this, TestActivity.class));
        mTestContent.addView(view); 
    }
    
    private View activityToView(ActivityGroup parent, Intent intent) {
        LocalActivityManager mLocalActivityManager = parent.getLocalActivityManager();
        final Window w = mLocalActivityManager.startActivity("TagName", intent);
        final View wd = w != null ? w.getDecorView() : null;
        if (wd != null) {
            wd.setVisibility(View.VISIBLE);
            wd.setFocusableInTouchMode(true);
            ((ViewGroup) wd)
                    .setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
        }
        return wd;
    }
    
  3. 注意:从不 startActivity(pkg, YourTargetActivity)!因此,用户永远不会将YourTargetActivity作为独立的Activity转发。