Highlight icon indicating copy to clipboard operation
Highlight copied to clipboard

Layout布局冗余的问题

Open yanftch opened this issue 9 years ago • 6 comments

现在的实现机制是,我一个页面要添加蒙板的话,就要创建一个layout布局文件,能不能优化一下~就使用一个layout布局文件,动态改变他里边的子控件啊~

yanftch avatar Nov 18 '16 05:11 yanftch

比如我的APP里边,有5个页面需要添加显示不同图片的蒙板,那么就需要创建5个不同的Layout~是不是有点占资源啊~~

yanftch avatar Nov 18 '16 05:11 yanftch

/** * 添加每个高亮布局 * * @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

yanftch avatar Dec 05 '16 07:12 yanftch

填充的Layout布局文件,冗余性太强,

yanftch avatar Dec 05 '16 07:12 yanftch

像你这种不同界面提示布局类似的情况 当然可以使用同一个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() 进行动态设置

isanwenyu avatar Dec 06 '16 02:12 isanwenyu

    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

yanftch avatar Dec 06 '16 03:12 yanftch

@isanwenyu highLight.show() 之后仅能获取当前highLightView里的控件进行动态设置,若是存在多个布局,如何动态设置后几个布局中控件的参数?

troyYe avatar Jan 11 '21 02:01 troyYe