Layout布局冗余的问题
现在的实现机制是,我一个页面要添加蒙板的话,就要创建一个layout布局文件,能不能优化一下~就使用一个layout布局文件,动态改变他里边的子控件啊~
比如我的APP里边,有5个页面需要添加显示不同图片的蒙板,那么就需要创建5个不同的Layout~是不是有点占资源啊~~
/** * 添加每个高亮布局 * * @param viewPosInfo 高亮布局信息 * @author [email protected] */ private void addViewForEveryTip(HighLight.ViewPosInfo viewPosInfo) { View view = mInflater.inflate(viewPosInfo.layoutId, this, false); LayoutParams lp = buildTipLayoutParams(view, viewPosInfo);
if (lp == null) return;
lp.leftMargin = (int) viewPosInfo.marginInfo.leftMargin;
lp.topMargin = (int) viewPosInfo.marginInfo.topMargin;
lp.rightMargin = (int) viewPosInfo.marginInfo.rightMargin;
lp.bottomMargin = (int) viewPosInfo.marginInfo.bottomMargin;
//fix the bug can't set gravity LEFT|BOTTOM or RIGHT|TOP
// if (lp.leftMargin == 0 && lp.topMargin == 0) // { // lp.gravity = Gravity.RIGHT | Gravity.BOTTOM; // }
if (lp.rightMargin != 0) {
lp.gravity = Gravity.RIGHT;
} else {
lp.gravity = Gravity.LEFT;
}
if (lp.bottomMargin != 0) {
lp.gravity |= Gravity.BOTTOM;
} else {
lp.gravity |= Gravity.TOP;
}
addView(view, lp);
}
@isanwenyu
填充的Layout布局文件,冗余性太强,
像你这种不同界面提示布局类似的情况 当然可以使用同一个layout 然后获取到里面的图片控件 动态设置下图片资源即可
你需要的提示布局是什么样的? 一个图片 一个按钮 一个文本 ? 目前的方案每次添加比较灵活
你可以通过下面方式简单封装下:
- version >= 1.5.0
可以设置显示回调
mHightLight.setOnShowCallback(new HighLightInterface.OnShowCallback() {//监听显示回调
@Override
public void onShow(HightLightView hightLightView) {
//直接得到HightLightView控件 进行动态设置
Toast.makeText(MainActivity.this, "The HightLight view has been shown", Toast.LENGTH_SHORT).show();
}
}
- version < 1.5.0
mHightLight.show()后直接通过mHightLight.getHightLightView() 进行动态设置
HighLight highLight = null;
highLight = new HighLight(MainActivity.this)
.addHighLight(btn_right, R.layout.layout_right, new OnTopPosCallback(), new RectLightShape(), 1, R.mipmap.iv_top)
.setClickCallback(new HighLightInterface.OnClickCallback() {
@Override
public void onClick() {
// Log.e(TAG, "onClick: " + "点击。。。。。。。。。"); } }) .setOnShowCallback(new HighLightInterface.OnShowCallback() { @Override public void onShow() {
}
});
highLight.show();
这是我在一个页面中使用的一个蒙板显示,这时候使用的是一个layout文件,layout里边就是一个图片 ,到了另一个页面,再显示一个蒙板,还是使用一个layout里边放另一个图片,这样怎么复用同一个layout啊 @isanwenyu
@isanwenyu highLight.show() 之后仅能获取当前highLightView里的控件进行动态设置,若是存在多个布局,如何动态设置后几个布局中控件的参数?