Slider: Android可以滑動頁面的項目

Slider 說明

1.基于SwipeBackLayoutSlidr開源項目進行功能的擴展補充

2.讓任何頁面通過簡單的實現SliderUi接口即可擁有滑動功能

Slider

使用方法

1.目前支持activity與fragment頁面滑動

2.通過如下簡單操作,即可讓頁面具備滑動功能。

public class SampleActivity extends Activity implements  SliderUi
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_slider);
        SliderUtils.attachUi(this, null)
    }

     @Override
    public Activity getUiActivity() {
        return this;
    }

    @Override
    public boolean isActivityUi() {
        return true;
    }

    @Override
    public boolean isFinishingUi() {
        return isFinishing();
    }

    @Override
    public void finishUi() {
        finish();
    }

    @Override
    public View getRootView() {
        return getWindow().getDecorView();
    }
}

亦或通過簡單的繼承:

public class ExtendsActivity extends SliderActivity {
}

或者是直接通過SliderUtils類加入也可以達到想要的滑動效果。

SliderUtils.attachActivity(this, null);

需要注意的是activity在manifest下配置theme需復寫android:windowIsTranslucent,否則拉開的背景會全黑。

<style name="ActivityTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:windowIsTranslucent">true</item>
    </style>

如果設備版本大于android 5.0,也可以如下代碼。在低于5.0版本下如何能在代碼中修改,目前沒有深入,所以在此也希望大家能共同完善!

SliderUtils.attachUi(this, null);
Utils.convertActivityToTranslucent activity)

關于fragment實現滑動功能,也基本可以通過類似的方式進行。而fragment不受android:windowIsTranslucent的影響。

public class SampleFragment extends Fragment implements SliderUi
{  
    private ISlider iSlider;
    private View rootView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_sample, container, false);
        iSlider = SliderUtils.attachUi(this, null);
        return iSlider.getSliderView();
        }

         @Override
    public Activity getUiActivity() {
        return getActivity();
    }

    @Override
    public boolean isActivityUi() {
        return false;
    }

    @Override
    public boolean isFinishingUi() {
        return isRemoving();
    }

    @Override
    public void finishUi() {
        getUiActivity().getFragmentManager().beginTransaction().remove(this).commit();
    }

    @Override
    public View getRootView() {
        return rootView;
    }
}

或者通過繼承,需要注意的是:在SliderFragment中onCreateView由于已經被final覆寫了,所以要實現另一個抽象方法 creatingView并返回當前layout的inflate對象。

public class ExtendsFragment extends SliderFragment
{
    @Override
    public View creatingView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_entends, container, false);
    }
}

最簡單的當然是直接把當前fragment傳入SliderUtils.attachFragment(Fragment fragment, SliderConfig config,View rootView) 來實現:

public class AdapterFragment extends Fragment{

    private ISlider iSlider;
    private View rootView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        rootView=inflater.inflate(R.layout.fragment_adapter, container, false);
        iSlider = SliderUtils.attachFragment(this, null,rootView);
        return iSlider.getSliderView();
    }

SliderConfig

如果你想改變Slider的一些屬性,可以在任何地方通過iSlider來設置或者在初始化的時候傳入.

iSlider.setConfig(mConfig);

ISlider

ISlider是在SliderUtils.attach*方法返回的接口對象,通過該接口可以操作或者獲得Slider對象。

使用項目

在項目的build.gradle文件中添加庫依賴

dependencies{
    compile 'com.komi.slider:slider:0.1.0'
}

Pull Requests 與 Issues

歡迎大家發現問題與共同維護該項目,喜歡就Star吧,后面會擴展更多實用功能

Author

KobeKomi

項目地址: https://github.com/KobeKomi/Slider

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!