Android 播放视频UI的功耗优化 && 动态增加view小结

本文探讨了Android中动态添加SurfaceView到Activity以优化视频播放UI的功耗,通过LayoutInflater动态创建和管理视图,利用关键接口如setLayoutParams、bringToFront等。同时,解释了android:layout_gravity在LinearLayout和FrameLayout中的行为,以及解决了一个LinearLayout中ImageView被TextView覆盖的诡异问题。
摘要由CSDN通过智能技术生成

背景:优化前播放视频的UI是直接用XML文件描述,这样确实方便调试和绘图。

但是如果不是动态添加surafaceview到activity的话,dumpsys sufaceFlinger会发现有一层activity的view一直存在。

但是如果我们是动态增加view到activity的话,播放视频的时候只会显示surfaceview,从而达到功耗优化的目的。


动态增加view的话,主要使用了以下重要的接口:

(1)LayoutInflater类,用起来其实和findVIewById配合很多。

主要有两个view的初始化

前者,LayoutInflater + findViewById

后者,setContentView + findViewById

最明显的区别是,前者是直接使用R.layout.XXX来找到实例目标所在的XML文件,而后者则是通过setContentView(R.layout.XXX);

所以前者比较灵活,在程序中想到就用;但是后者一般只能初始化一次。


初始化LayoutInflater的方法有三种,直接拿来主义:

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);或

LayoutInflater inflater = LayoutInflater.from(Activity.this);或

LayoutInflater inflater = getLayoutInflater();


使用则是inflater.inflate(R.layout.XXX,null).findViewById(R.id.XXX);


(2)addView的两个方法

addView
public void addView(View child,
                    int width,
                    int height)Adds a child view with this ViewGroup's default layout parameters and the specified width and height. 

参数:
child - the child view to add


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值