提供将一个Activity转化为View显示出来

本文介绍了如何将一个Activity转换成View显示出来,通过LocalActivityManager的使用,实现Activity到View的转化,适用于在OpenGL等场景下展示复杂的UI组件。同时,以TabActivity为例,展示了在TabHost中如何通过Intent加载Activity并将其内容转化为View进行显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码,这些立体面上都是些图片之类的ImageView的组件,许多人问能不能将一些Activity显示到上面。

    最近我在看TabActivity的时候,发现这是可以实现的。

public View activityToView(Context parent,Intent intent){

     LocalActivityManager mLocalActivityManager = new LocalActivityManager(parent,true);

     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(
                        FOCUS_AFTER_DESCENDANTS);
            }
            return wd ;

 

}

    大家知道,tabactivity既可以加载普通的layout布局文件,view组件,还有Intent(指定的activity),看下通讯录的一段代码:

        Intent intent = new Intent("com.android.phone.action.RECENT_CALLS");
        intent.setClass(this, RecentCallsListActivity.class);

        mTabHost.addTab(mTabHost.newTabSpec("call_log")
                .setIndicator(getString(R.string.recentCallsIconLabel),
                        getResources().getDrawable(R.drawable.ic_tab_recent))
                .setContent(intent));

 setContent()方法其实是得到一个new IntentContentStrategy(mTag, intent)的实例。

 当当前的Intent的tab获得焦点的时候,TabHost会调用IntentContentStrategy的getContentView()方法,将要显示的activit转化为view显示在Tabweight的下面。

getContentView()的实现方法就类似于前面说的activityToView()方法。具体的大家可以去看TabHost的源码。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值