网页制作

DialogFragment封装,高效实现各种弹窗效果

时间:01-14   作者:YDW   来源:YDW.ORG   阅读:67  
内容摘要:所有框架的由来都是为了更方便,更高效的解决问题,也一样,是为了在项目中更高效的实现项目的弹窗效果.是继承自进行封装的,大部分开发者在实现弹窗效果的时候,会首选系统提供的;的实现原理和系统原理差不多,主要使用设计模式实现(),设置的,为了封装的item点击事件,传入的需要为的实现类实现:需要使用者传入item的xml布局,和List数据show()方法调用显示弹窗

云端网 - www.ydw.org

2018年安卓巴士全球开发者论坛-杭州站

【1.13杭州站沙龙】主持小姐姐让我跟大家说她是单身···

距离活动开始还有三天,杭州的开发者们赶快报名行动起来吧!

前言

文章代码示例已放到上了,有需要的朋友可以去看下,欢迎star和fork,项目会一直维护,有疑问可以提或留言.

文章目录

安卓xml布局_安卓xml布局 文字居中_安卓xml布局

一.的由来

所有框架的由来都是为了更方便,更高效的解决问题,也一样,是为了在项目中更高效的实现项目的弹窗效果.

是继承自进行封装的,大部分开发者在实现弹窗效果的时候,会首选系统提供的;

但是使用系统的在某些情况下会出现问题,最常见的场景是当手机屏幕旋转时弹窗会消失,并抛出一个系统,这个异常不会导致异常崩溃,因为开发者知道这个问题,并进行了处理.

使用起来其实更简单,但是却是推荐尽量使用.

1.的优点

1.在项目build.文件中添加依赖

'com.timmy.::1.1.3'

2.或者中使用

.(nager()) .(R..) .( 600) .( 800) .(. this, 0.5f) .t(. this, 0.6f) .( "") .( 0.6f) .(.) .r( r() {

@( ){ .(, ""); } }) .(R.id., ) .er( er() {

@( ,View view, ){ } }) .() .show(); 使用方法解析

的实现原理和系统原理差不多,主要使用设计模式实现

1.创建弹窗,必须传入xml布局文件,且自己设置背景色,因为默认是透明背景色

.(nager()) .(R..) .() .show();

2.设置弹窗的宽高(如果不设置宽或者高,默认使用包裹内容的高度)

.(nager()) .(R..) .( 600) //设置弹窗固定宽度(单位:px).( 800) //设置弹窗固定高度.(. this, 0.5f) //动态设置弹窗宽度为屏幕宽度百分比(取值0-1f).t(. this, 0.6f) //设置弹窗高度为屏幕高度百分比(取值0-1f).() .show();

3.设置弹窗展示的位置

.(.)其他位置有:. / .LEFT等等和设置控件位置一样

4.设置弹窗背景色透明度(取值0-1f,0为全透明)

.( 0.6f)

5.当弹窗需要动态改变控件子view内容时,这里借鉴了.的设计思想,内部封装好一个

.r( r() {

@( ){ .(, ""); }})

6.监听弹窗子控件的点击事件,内部也是通过实现

(ids[])只需要将点击事件控件的id传入,并设置回调接口er()

.(R.id., ).er( er() {

@( ,View view1, ){

(view1.getId()) {

caseR.id.: Toast.(. this, "", Toast.).show(); .();

break;

‍‍: Toast.(. this, "", Toast.).show();

break; } }})

7.设置底部列表弹窗

.(nager()) .( 600) .( this, 0.8f) .(.) .( (R.., .(data)) {

@( , , s){ .(, s); } }) .( .() {

@( , , s, ){ Toast.(y. this, "click:"+ s, Toast.).show(); .(); } }) .() .show(); 列表弹窗

为了方便使用:

不用传入布局文件,内部设置了一个默认的布局,且的控件id为,背景为#

(),设置的,为了封装的item点击事件,传入的需要为的实现类

(),设置的点击事件

实现:需要使用者传入item的xml布局,和List数据

. {

tRes;

datas;

ener;

;

( , , T t);

(@ , List datas){

this. = ;

this.datas = datas; }

@ ( , ){

der(.from(.()).(, , false)); }

@( , ){ (, , datas.get()); ..( .() {

@Click(View v){ ener.(, , datas.get(), ); } }); }

@(){

.size(); }

( ){

this. = ; }

r {

( , , T t, ); }

( ){

this.ener = ; }} 如果使用者需要使用自己的列表布局时,可以使用(,)方法设置xml布局和布局管理器,切记xml布局中的的id必须设置为(如效果图中的分享弹窗)//底部分享g(View view){

.(nager()) .(R..r, er( this, ., false)) .( this, 1.0f) .(.) .( (R.., .()) {

@( , , s){ .(, s); } }) .( .() {

@( , , item, ){ Toast.(y. this, item, Toast.).show(); .(); } }) .() .show();}

自定义列表布局

框架原理解析

的实现原理主要分为三步

实例化.对象,然后调用各种()方法设置数据,设置的数据都保存在.实例中

()方法调用后才会实例化对象,并将.中设置的数据传递到的属性对象中

show()方法调用显示弹窗

项目地址:

www.ydw.org - 云端网


标签:安卓xml布局  安卓xml布局  安卓xml布局 文字居中  
网站版权  8888888888  8888888888