自定义简单的android阴影引导工具类

“业务需求是激发程序员潜能的第一外界动力”。据说过几天要做在每次版本更新后,第一次使用时引导用户添加了那些新功能。这个实现方法很多,上班无聊封装一个工具类。

具体ShadeGuideWindowUtils.java如下:

/**
 * Created by rongtao on 2016/5/11.
 * 在第一次使用时显示阴影引导的工具类
 */
public class ShadeGuideWindowUtils {
    private final static float DEFAULT_ALPHA=0.5f;//默认的阴影透明度

    /**
     *
     * @param activity 显示阴影的界面Activity,如果是 fragment用getActivity()
     * @param root    Activity布局的根布局,建议用FrameLayout
     * @param layoutid 阴影引导的布局文件的Id
     * @param alpha 显示阴影时界面的透明度
     */
    public static void showShadeGuide(final Activity activity, final  ViewGroup root,int layoutid,float alpha){

        if (activity==null||root==null){
            //自定义异常
            throw new RuntimeException("Activity Or RootLayoutParams is null!");
        }
        //加在阴影布局
        final View view = activity.getLayoutInflater().inflate(layoutid, null);
        //获取window的布局参数
        final WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
        final Window window = activity.getWindow();
        if(alpha>=0&&alpha<=1.0f){
            lp.alpha =alpha;
        }else{
            lp.alpha=DEFAULT_ALPHA;
        }
        //设置窗口透明度
        window.setAttributes(lp);
        //添加阴影效果
        root.addView(view);
        //取消阴影效果
        view.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                root.removeView(view);
                lp.alpha =1.0f;
                window.setAttributes(lp);
                return false;
            }
        });
    }
}

具体用法:

 private void init() {
 FrameLayout root = (FrameLayout) findViewById(R.id.fl_root);
        ShadeGuideWindowUtils.showShadeGuide(this,root,R.layout.popup_window,0.4f);
    }
布局文件自己搞,布局文件的根布局建议用FrameLayout,阴影界面的根布局就一个ImageView。大概提供一个思路,感觉用着不爽的可以自己修改扩充。

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值