菜单

layui选项卡效果实现代码_jquery_脚本之家

2020年3月20日 - www.2138.com
layui选项卡效果实现代码_jquery_脚本之家

正文实例为我们分享了layui选项卡的具体代码,供大家参照他事他说加以考查,具体内容如下

本文是 Chrome Custom Tabs 官方文书档案的依照本身的知道的重新整建译文
  选项卡   

什么是Chrome Custom Tabs(CCT)?

   当开发者是去打开一个URL时候往往有两种方式:WebView和打开浏览器。目前这两种方式皆有不足,WebView不与浏览器共享状态,维护开销大;打开浏览器是一个重量级的操作并且浏览器不可定制化。
   此时谷歌爸爸给了我们新的选择,CCT让我们在网络体验上有了很多的控制,使本地和Web内容更加无缝之间的转换,而无需采取WebView的方式。

CCT允许使用定制浏览器的外观和体裁,如下:

CCT还允许开垦人士预运转Chrome和更加快的剧情预抓取加载。

图片 1

此间写图片描述

今后得以在Github上测量试验这一个
sample.


暗中认可风格的Tab

怎么接纳Chrome Custom Tabs vs WebView?

WebView是对此显示自个儿域名下或本地的网页内容很好的一种缓和方案,因为您大概会去网页内容做过多自定义的内容。而一旦教导客户去第三方的网站时,提出您使用CCT,理由如下:

选取标准?

亟需安装Chrome45或上述版本,扶持的Android版本(Jellybean(4.1卡塔尔以上)。


  1. 中度暗许自适应,也得以随意固宽。
  2. Tab实行了响应式管理,所以不必操心数量多少。

行使指导

贰个完全的例证可在https://github.com/GoogleChrome/custom-tabs-client
找到。它包含了利用可再度的类来定制UI,连选拔后台服务,并拍卖应用程序和CCT的生命周期。

首先你须求加多CCT的信赖 Custom Tabs Support
Library在你的build.gradle文件里

dependencies {

compile<font
color=’#080′>’com.android.support:customtabs:24.2.0′</font>
}

当您做到增进注重你也有多少个构造须求自定义:

UI的自定义你恐怕会使用到
CustomTabsIntent

CustomTabsIntent.Builder;
品质的修正通过行使CustomTabsClient
来连接Custom Tabs service,预加热Chrome以至让它理解那多少个UTucsonL将被展开.

内容2

快快利用

String url = ¨https://paul.kinlan.me/¨;
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));

内容3

设置Toolbar颜色

builder.setToolbarColor(colorInt);

内容4

自定义Action Buttons

用作开辟者你将有所展现给客商的Chrome标签内的操作开关的具备调节。

在大部分气象下,那将是壹人命关天的机能,如分享,可能你的客户将实践另一种普及的移位。

客户点击操作开关调用的PendingIntent通过Bundle由Chrome传递过来。该图标是可观最棒是24dp和24-48dp的增长幅度。

// Adds an Action Button to the Toolbar.
// 'icon' is a Bitmap to be used as the image source for the
// action button.


// 'description' is a String be used as an accessible description for the button.

// 'pendingIntent is a PendingIntent to launch when the action button
// or menu item was tapped. Chrome will be calling PendingIntent#send() on
// taps after adding the url as data. The client app can call
// Intent#getDataString() to get the url.

// 'tint' is a boolean that defines if the Action Button should be tinted.

builder.setActionButton(icon, description, pendingIntent, tint);

内容5

自定蓬蒿单

Chrome浏览器CCT将一直会有上扬,页面新闻,刷新八个图标,菜单上会有“查找页面”和“在浏览器中开采”两项。作为开采者你还足以加上多达5个菜单项。

菜单项是透过调用
CustomTabsIntent.Builder#addMenuItem
和富含题指标PendingIntent,然后Chrome会将客户的行事充当参数传递过来。

builder.addMenuItem(menuItemTitle, menuItemPendingIntent);

动态操作Tab

安装切换动漫

成都百货上千Android应用程序中接收自定义动漫来过渡Android上的Activities切换。
CCT并不曾什么样差异,你能够退换的开采和停业(当客户按下后退)动漫,让他们与你的应用程序的别的一些相平等。

builder.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left);
builder.setExitAnimations(this, R.anim.slide_in_left, R.anim.slide_out_right);

预加热Chrome加速加载页面

暗许境况下,当CustomTabsIntent#launchUrl
被调用时它会运维Chrome和UEscortL,这会占领宝贵的大运和影响切换平滑的痛感。

大家精通顾客须求附近眨眼之间时的心得,所以大家提供三个方可让使用连接并告知Chrome预加热浏览器和本地组件的劳动。同期大家也得以告知Chrome浏览器你设置的客商将会探望的网站,然后Chrome将会实践一出手续:

预加热Chrome的长河如下:

内容1

连接到Chrome Service

CustomTabsClient#bindCustomTabsService
简化了延续到Custom Tabs service的流程,创建
CustomTabsServiceConnection,并使用
onCustomTabsServiceConnected
得到
CustomTabsClient的叁个实例。操作如下

// Package name for the Chrome channel the client wants to connect to. This
// depends on the channel name.
// Stable = com.android.chrome
// Beta = com.chrome.beta
// Dev = com.chrome.dev
public static final String CUSTOM_TAB_PACKAGE_NAME = "com.android.chrome";  // Change when in stable

CustomTabsServiceConnection connection = new CustomTabsServiceConnection() {
    @Override
    public void onCustomTabsServiceConnected(ComponentName name, CustomTabsClient client) {
        mCustomTabsClient = client;
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {

    }
};
boolean ok = CustomTabsClient.bindCustomTabsService(this, mPackageNameToBind, connection);

Warm up the Browser Process
boolean warmup(long
flags)
归来 true 代表成功.

预加热浏览器进度和加载库文件。此操作是异步的,重临值表示伏乞是不是被选用。数次调用成功亦再次来到true

创建Tab session
boolean newSession(CustomTabsCallback
callback)

对话被用来随后与CustomTabsCallback相连接的回调,并发出相互作用的竹签。这里提供的回调与成立会话相关联。所创制的对话的别的更新(见上边包车型地铁自定义选项卡回调)通过该回调接受。重回值表示会话是不是已成功开创。多少个调用雷同CustomTabsCallback恐怕空值将回来false。

设置恐怕展开的U纳瓦拉L
boolean mayLaunchUrl(Uri url, Bundle extras, List
otherLikelyBundles)
该办法告诉浏览器一个前程也许加载的ULX570L。warmup()
首先会被调用,最有极大恐怕的U悍马H2L必得首先钦点。(可选)能够提供其余恐怕的UHighlanderL列表。它们被视为不太大概比较第多少个,何况以降序举行排序。这几个额外的UHighlanderL大概会被忽略。这种艺术从前有所的伸手都将被deprioritized。重返值表示操作是或不是中标做到。

自定义选项卡Connection Callback
void onNavigationEvent(int navigationEvent, Bundle
extras)
自定义选项卡有客户作为发出时将被调用。该
navigationEvent int是概念的6种页面状态。请参阅上边包车型客车详细音信。

/**
* Sent when the tab has started loading a page.
*/
public static final int NAVIGATION_STARTED = 1;

/**
* Sent when the tab has finished loading a page.
*/
public static final int NAVIGATION_FINISHED = 2;

/**
* Sent when the tab couldn't finish loading due to a failure.
*/
public static final int NAVIGATION_FAILED = 3;

/**
* Sent when loading was aborted by a user action before it finishes like clicking on a link
* or refreshing the page.
*/
public static final int NAVIGATION_ABORTED = 4;

/**
* Sent when the tab becomes visible.
*/
public static final int TAB_SHOWN = 5;

/**
* Sent when the tab becomes hidden.
*/
public static final int TAB_HIDDEN = 6;

内容2

假如客户并未有设置了新星版本的Chrome会发生什么样?

自定义选项卡使用含有附加功用键的ACTION_VIEW意图定制UI。那代表,在默许情况下页面将会在系统浏览器,或客户的暗中认可浏览器。

比如客商安装了Chrome浏览器并且安装私下认可的浏览器,它会活动拿起额外器械和表现的自定义UI。此外,也可感觉其余浏览器选取意图额外提供二个好像的定制接口。

内容3

如何检查Chrome是还是不是支持CCT?

抱有版本的Chrome都扶植CCT暴拆穿来的叁个劳务。要检查是否扶持自定义选项卡,尝试绑定到该服务。若是成功,则足以清心寡欲选取自定义选项卡。

内容4

一级实行

内容5

Connect to the Custom Tabs service and call warmup()

经过如此的情势你最多能够节约700ms,700ms大致是界定卡与不卡的时日。在Activity的
onStart()
去连接Custom Tab service, 连接后调用
warmup().
这一操作将用作低优先级的长河,那代表它不会对你的应用程序品质的消极面影响,但加载链接时会给出一个大的性质提高。

新增Tab项

Pre-render content

预渲染将使表面内容须臾间开发。所以,尽管您的客商起码点击链接的50%的大概性,调用mayLaunchUrl()那一个方法会提前下载并渲染网页内容,但不可幸免的会有少数流量和电量的消耗。若是客商正在采用收取费用的数据流量,可能手提式无线电话机电量不足,那么那一个格局不会生效。所以大家全然不用自个儿着想品质优化

除去:商品管理

打算方案

设若客户的无绳电话机上向来不设置Chrome,那么展开暗许浏览器大概并非最佳的顾客体验。所以一旦在bindService那一步失利了,不论是打开默许浏览器依然WebView,接纳三个你以为最棒的预备方案。

切换成:客户处理

Add your app as the referrer

众多网址都会计算本人的流量是从何地来的,所以最佳报告他们是你的英俊应用软件给他俩带来了流量:

intent.putExtra(Intent.EXTRA_REFERRER, 
        Uri.parse(Intent.URI_ANDROID_APP_SCHEME + "//" + context.getPackageName()));

Hash地址定位

自定义动漫

自定义动漫将令你的应用程序将网址内容更平整的连片。确认保证形成动漫和动漫片初阶是相对应的,那会接济顾客通晓她们早已回来了应用程序。

 //Setting custom enter/exit animations
    CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
    intentBuilder.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left);
    intentBuilder.setExitAnimations(this, android.R.anim.slide_in_left,
        android.R.anim.slide_out_right);

//Open the Custom Tab        
    intentBuilder.build().launchUrl(context, Uri.parse("https://developer.chrome.com/"));        

为ActionButton加多多少个Icon

增添ActionButton能够让客户越来越多的打听应用有那多少个效果。你能够创制描述该操作的公文的位图,若无二个很好的Logo来代表您的操作开关推行的操作,记住位图的最大尺寸为24dp高x宽48dp。

    String shareLabel = getString(R.string.label_action_share);
    Bitmap icon = BitmapFactory.decodeResource(getResources(),
            android.R.drawable.ic_menu_share);

    //Create a PendingIntent to your BroadCastReceiver implementation
    Intent actionIntent = new Intent(
            this.getApplicationContext(), ShareBroadcastReceiver.class);
    PendingIntent pendingIntent = 
            PendingIntent.getBroadcast(getApplicationContext(), 0, actionIntent, 0);            

    //Set the pendingIntent as the action to be performed when the button is clicked.            
    intentBuilder.setActionButton(icon, shareLabel, pendingIntent);

点击该Tab的任一标题,观望地方栏变化,再刷新页面。选项卡将会自动定位到上三回切换的项

多少个浏览器的精选

顾客可以设置五个援助CCT的浏览器。借使有二个之上的浏览器扶助自定义选项卡或然个中未有一个是首推浏览器,那么能够明白顾客想如何张开链接.其它增添叁个能够选拔暗中同意浏览器的选项,这样可以让客户自由的去选取是还是不是使用CCT.

    /**
     * Returns a list of packages that support Custom Tabs.
     */ 
    public static ArrayList getCustomTabsPackages(Context context) {
        PackageManager pm = context.getPackageManager();
        // Get default VIEW intent handler.
        Intent activityIntent = new Intent(Intent.ACTION_VIEW,  Uri.parse("http://www.example.com"));

        // Get all apps that can handle VIEW intents.
        List resolvedActivityList = pm.queryIntentActivities(activityIntent, 0);
        ArrayList packagesSupportingCustomTabs = new ArrayList<>();
        for (ResolveInfo info : resolvedActivityList) {
            Intent serviceIntent = new Intent();
            serviceIntent.setAction(ACTION_CUSTOM_TABS_CONNECTION);
            serviceIntent.setPackage(info.activityInfo.packageName);
            // Check if this package also resolves the Custom Tabs service.
            if (pm.resolveService(serviceIntent, 0) != null) {
                packagesSupportingCustomTabs.add(info);
            }
        }
        return packagesSupportingCustomTabs;
    }

内容2

接收本地利用场理链接

一对UENVISIONL能够透过地点应用程序实行管理。假设客商安装了推特的应用程序,那么点击链接后更期待在推文(Tweet卡塔尔(TWT昂科威.US卡塔尔(قطر‎中开荒。所以在应用程序张开一个U揽胜L从前,最棒先检查本机是还是不是有方法可以代替。

内容3

定义Toolbar颜色

只要您期待顾客认为内容是应用程序的一有个别,那么能够设置Toolbar颜色为Primary
color。假若你思谋让客户知道该页面已经离开了您的App那么相对不要自定义Toolbar颜色。

内容4

累积分享

大超级多场合下用户都会想要分享这些链接但是CCT默许不增加,所以最佳团结丰硕

    //Sharing content from CustomTabs with on a BroadcastReceiver
    public void onReceive(Context context, Intent intent) {
        String url = intent.getDataString();

        if (url != null) {
            Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("text/plain");
            shareIntent.putExtra(Intent.EXTRA_TEXT, url);

            Intent chooserIntent = Intent.createChooser(shareIntent, "Share url");
            chooserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startActivity(chooserIntent);
        }
    }

内容5

概念关闭开关

一经你期望顾客感觉像CCT是二个会话框能够动用暗中同意的“X”按键。若是你希望客户觉取得CCT是App的一有的能够利用后退箭头。

    //Setting a custom back button
    CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
    intentBuilder.setCloseButtonIcon(BitmapFactory.decodeResource(
        getResources(), R.drawable.ic_arrow_back));

精练风格的Tab

管理内部链接

当拦截到由android:autoLink或然WebView发生的里边链接点击时,最棒让应用程序自个儿去管理,CCT只管理外界链接。

WebView webView = (WebView)findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return true;
    }

    @Override
    public void onLoadResource(WebView view, String url) {
        if (url.startsWith("http://www.example.com")) {
            //Handle Internal Link...
        } else {
            //Open Link in a Custom Tab
            Uri uri = Uri.parse(url);
            CustomTabsIntent.Builder intentBuilder =
                    new CustomTabsIntent.Builder(mCustomTabActivityHelper.getSession());
           //Open the Custom Tab        
            intentBuilder.build().launchUrl(context, url));                            
        }
    }
});

连续攻击管理

管教客户点击链接后到展开CCT之间并不是超越100ms,不然客户会感到反应愚笨,并尝试多次点击。当然卡顿是不也许制止的,所以在客商数次点击后确定保障只开发CCT贰遍。


剧情不等同是要有,因为您能够监听tab事件

参考 http://qq157755587.github.io/2016/08/12/custom-tabs-best-practices/

内容2

内容3

内容4

内容5

卡牌风格的Tab

私下认可宽度是相对于父成分100%适应的,你也得以一定宽度。

2

3

4

5

6

当Tab数超越一定幅度

  1. 宽窄充分,就不会现出右上海体育场合标;宽度非常不够,就能够开启打开功效。
  2. 万一您的幅度是自适应的,Tab会自行剖断是或不是须要进行,并适用于全数风格。

2

3

4

5

6

带删除效用的Tab

  1. 自己个人相比赏识卡片风格的,所以你开采又是以卡牌的风骨譬喻 2.
    刨除成效适用于全部风格

2

3

4

5

6

如上正是本文的全体内容,希望对大家的求学抱有利于,也期望大家多都赐教脚本之家。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图