Giter Site home page Giter Site logo

alphamasklayout's Introduction

AlphaMaskLayout

Platform API

popupwindow或者dialog弹出的时候,指定某个布局有一个透明度的过渡效果

1.支持自定义开始结束透明度、动画时间

2.透明度动画可以中断继续或返回

→_→城市选择推荐使用CityPicker

Gif

image

Install

Gradle:

compile 'com.zaaach:alphamasklayout:1.1'

or Maven:

<dependency>
  <groupId>com.zaaach</groupId>
  <artifactId>alphamasklayout</artifactId>
  <version>1.1</version>
  <type>pom</type>
</dependency>

or 下载library手动导入.

Usage

AlphaMaskLayout extends FrameLayout.

attrs for AlphaMaskLayout

<declare-styleable name="AlphaMaskLayout">
        <!--开始透明度0~255-->
        <attr name="aml_alpha_from" format="integer"/>
        <!--结束透明度0~255-->
        <attr name="aml_alpha_to" format="integer"/>
        <!--透明度动画时间长度-->
        <attr name="aml_duration" format="integer"/>
</declare-styleable>

Step1:

在XML中添加

<com.zaaach.alphamasklayout.AlphaMaskLayout
	android:id="@+id/mask_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/layout_bottom"
    android:foreground="#000"
    aml:aml_alpha_from="0"
    aml:aml_alpha_to="127"
    aml:aml_duration="600">
    //your layout here
    //...
    //...
</com.zaaach.alphamasklayout.AlphaMaskLayout>

其中android:foreground="#000"就是遮罩层的颜色,不设置则使用默认值#1f1f1f.

//you can also do in java like this:
maskLayout.setAlphaFrom(0);
maskLayout.setAlphaTo(127);
maskLayout.setDuration(600);

Step2:

activity中调用

//显示
moreBtn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        View content = LayoutInflater.from(MainActivity.this).inflate(R.layout.popup, null);
        mPopupWindow = new PopupWindow(content, 300, 400);
        mPopupWindow.setFocusable(true);
        mPopupWindow.setOutsideTouchable(true);
        mPopupWindow.setBackgroundDrawable(new ColorDrawable());
        mPopupWindow.showAsDropDown(moreBtn);
        mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
              @Override
              public void onDismiss() {
                maskLayout.hideMask();
              }
        });
        maskLayout.showMask();
      }
});
//监听器
maskLayout.setOnAlphaFinishedListener(new AlphaMaskLayout.OnAlphaFinishedListener() {
            @Override
            public void onShowFinished() {
                Toast.makeText(MainActivity.this, "show finished", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onHideFinished() {
                Toast.makeText(MainActivity.this, "hide finished", Toast.LENGTH_SHORT).show();
            }
        });

Step3:

Done! hope it will be useful.

alphamasklayout's People

Contributors

xingstarx avatar zaaach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

alphamasklayout's Issues

4.4.4 oppo手机闪退

Caused by: java.lang.NoSuchMethodError: android.widget.FrameLayout.
at com.zaaach.alphamasklayout.AlphaMaskLayout.(AlphaMaskLayout.java:53)
at com.zaaach.alphamasklayout.AlphaMaskLayout.(AlphaMaskLayout.java:47)
at com.zaaach.alphamasklayout.AlphaMaskLayout.(AlphaMaskLayout.java:43)
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.