Android ViewPager 打造炫酷欢迎页

打造Android垂直ViewPager交互体验 移动应用开发中,用户体验的优化总是核心目标之一。其中,页面浏览方式的改进是增强用户体验的重要手段。在Android开发中,ViewPager组件提供了左右滑动切换页面的功能,但在某些场景下,开发者需要实现垂直方向的滑动效果。本章节将对垂直方向的ViewPager进行基础介绍,为后续章节中垂直ViewPager的第三方库应用、自定义实现以及相关优化提供理论基础。大多数VerticalViewPager库会提供一系列API以供开发者使用。 阅读详情

Android ViewPager 打造炫酷欢迎页

ViewPager是Android扩展v4包中的类,这个类可以让用户切换当前的View。对于这个类的应用场景,稍加修改就可以应用到多个环境下。比如:App的欢迎页,App导航页设计,app的侧滑退出和app的侧边栏应用界面设计等都可以用ViewPager实现。

   

1. 关于欢迎页的导航设计

  • 设计思想:欢迎页的导航包括几个app说明(欢迎页),页面的下方有导航点,显示当前所在的页面数,自动跳转下一页,最后一页有进入的 登陆\注册 的按钮。或者有提示进入的按钮。或者有直接的登陆或者注册的输入框。输入完成后进入主界面。

  • 代码设计:创建包容欢迎页面的视图集合,包含指示当前第几页的“点”的集合,包含最后一页的跳转设计,包含用户当前不操作的自动跳转,包含用户销毁当前应用第二次进入的跳过欢迎页等设计。

2. 欢迎页的引导页设计

  • 1.引导类:

//建立Guide类继承自 AppCompatActivity,实现OnPageChangeListener 并实现OnPageChangeListener的onPageScrolled,onPageSelected,onPageScrollStateChanged类。

public class Guide extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private ViewPager vp;
private ViewPagerAdapter vpAdapter;   //创建ViewPager适配器
private List<View> views;   //创建视图集合
private ImageView[] dots;   //创建指示点集合

private int[] ids = {R.id.iv_bit1, R.id.iv_bit2, R.id.iv_bit3, R.id.iv_bit4};   //初始化指示点集合
private Button btn_start;   //初始末页跳转按钮


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);   //欢迎页无标题设置
    setContentView(R.layout.guide_layout); 
    initViews();
    initDots();
}

private void initViews() {
    LayoutInflater inflater = LayoutInflater.from(this);
    views = new ArrayList<View>();
    views.add(inflater.inflate(R.layout.one, null));
    views.add(inflater.inflate(R.layout.two, null));
    views.add(inflater.inflate(R.layout.three, null));
    views.add(inflater.inflate(R.layout.four, null));

    vpAdapter = new ViewPagerAdapter(views, this);
    vp = (ViewPager) findViewById(R.id.viewPager);
    vp.setAdapter(vpAdapter);
    //适配器适配页面

    btn_start = (Button) views.get(3).findViewById(R.id.btn_start);
    //到第四页点击按钮跳转

    btn_start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Guide.this,MainActivity.class);
            //跳转到主Activity
            startActivity(intent);
            finish();   //销毁没有用的内存占用
        }
    });


    vp.setOnPageChangeListener(this);

}

private void initDots() {
    dots = new ImageView[views.size()];
    for (int i = 0; i < views.size(); i++) {
        dots[i] = (ImageView) findViewById(ids[i]);
           //根据当前页面的views.size()来变化指示图标
    }
}


@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

//指示点的变化函数
@Override
public void onPageSelected(int position) {
    for (int i = 0; i < ids.length; i++) {
        if (position == i) {
            dots[i].setImageResource(R.drawable.login_point_selected);
        } else {
            dots[i].setImageResource(R.drawable.login_point);
        }

    }

}

@Override
public void onPageScrollStateChanged(int state) {

}
}
  • 2.引导视图:

位于页面最下方的四个点:第一个是默认被选中的点。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00333333"
    >
</android.support.v4.view.ViewPager>

<LinearLayout
    android:id="@+id/ll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:gravity="center_horizontal"

    >
    <ImageView
        android:id="@+id/iv_bit1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/login_point_selected"
        />
    <ImageView
        android:id="@+id/iv_bit2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/login_point"
        />
    <ImageView
        android:id="@+id/iv_bit3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/login_point"
        />
    <ImageView
        android:id="@+id/iv_bit4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/login_point"
        />
</LinearLayout>
</RelativeLayout>
  • 3.打造视图适配器:

//建立ViewPagerAdapter继承自 PagerAdapter,并实现其destroyItem,instantiateItem,getCount,isViewFromObject方法。构造ViewPagerAdapter的内部类,创建View的数组类和联系上下文的Context。

public class ViewPagerAdapter extends PagerAdapter {

private List<View> views;
private Context context;

public ViewPagerAdapter(List<View> views,Context context){
    this.views = views;
    this.context = context;
}

@Override
public void destroyItem(View container, int position, Object object) {
    ((ViewPager)container).removeView(views.get(position));
}

@Override
public Object instantiateItem(View container, int position) {
    ((ViewPager)container).addView(views.get(position));
    return views.get(position);
}

@Override
public int getCount() {
    return views.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {

    return (view == object);
}
}
  • 4.分别实现四个欢迎视图:

第一个欢迎界面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/guide_one"
/>
</LinearLayout>

第四(末)个欢迎界面:

<?xml version="1.0" encoding="utf-8"?>
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
    android:id="@+id/iv_four"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_four"
    />
<LinearLayout
    android:id="@+id/btn_welcome"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    >
    <Button
        android:id="@+id/btn_start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="welcome"
        />
</LinearLayout>
</RelativeLayout>
  • 5.建立控制进入与跳转变化的类WelCome:

//用异步的方法来实现跳转的判断

public class Welcome extends AppCompatActivity {
private boolean isFirstIn = false;   //设置第一次进入为false
private static final int TIME = 2300;   //从logo界面到欢迎页的时间为2.3秒
private static final int GO_HOME = 1000;   //到主页的时间
private static final int GO_GUIDE = 1001;   //到欢迎页的时间多1来判断

private Handler mHandler = new Handler(){   //异步信息
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what){
            case GO_HOME:
                goHome();
            break;
            case GO_GUIDE:
                goGuide();
                break;

            default:
                break;
        }

    }
};



@Override
protected void onCreate(Bundle savedInstanceState) {
    final Intent intent = new Intent(Welcome.this,MainActivity.class);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome_layout);
    init();   //自定义方法判断是否第一次开启App

    //设置自动跳转时间Timer 无响应后10秒自动跳转
    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
           startActivity(intent);
        }
    };
    timer.schedule(task,1000*10);
    finish();

}

private void init(){
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    isFirstIn = preferences.getBoolean("isFirstIn",true);

    if (!isFirstIn){
        mHandler.sendEmptyMessageDelayed(GO_HOME,TIME);
    }else {
        mHandler.sendEmptyMessageDelayed(GO_GUIDE,TIME);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("isFirstIn",false);
        editor.commit();
    }

}

private void goHome() {
    Intent intent = new Intent(Welcome.this,MainActivity.class);
    startActivity(intent);
    finish();
}

private void goGuide() {
    Intent intent = new Intent(Welcome.this,Guide.class);
    startActivity(intent);
    finish();
}
}
  • 6.WelCome视图:

加入logo的ImageView视图:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/welcome_android"
    />
</LinearLayout>
  • 7.修改AndroidManifest.xml 注册信息以及首选开启项:

修改主题为NoTitleBar,修改引导页为WelCome类:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.asdemot">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
    <activity android:name="com.example.asdemot.Guide">

    </activity>
    <activity android:name="com.example.asdemot.Welcome">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>
  • 8.总结:

需要导入V4的jar包。至此,一个热气腾腾的欢迎页就完成了。

Android-单页显示3个Item的ViewPager炫酷切换效果适用于Banner等。 单页显示3个Item的ViewPager炫酷切换效果,适用于Banner等。 立即下载

相关推荐

FlipViewPager 非常酷炫的可翻动的item的Viewpager自定义控件

FlipViewPager 非常酷炫的可翻动的item的Viewpager自定义控件

Android 自定义ViewPager酷炫切换动画

首先看一下ViewPager自带的滑动效果:那么如何打造属于自己的切换效果呢? 当viewpager上一个可见或依附的页面发生了滚动事件就会调用PageTransformer,这让应用可以使用自定义transformation让viewpager某一个页面视图上实现某些特定的动画属性。只需要一行代码就可以实现自定义动画切换功能, 类似于下面的代码:mPager.setPageTransforme

ckwccc的博客 1185

Android项目中的欢迎界面和引导页:动画和ViewPager

android每个应用都有欢迎页面和引导页,这个小Demo可以达到一个可扩展的效果。

Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI

转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/42160391,本文出自:【张鸿洋的博客】 我参加了博客之星评选,如果你喜欢我的博客,求投票~~http://vote.blog.youkuaiyun.com/blogstar2014/selection?username=lmj623565791#content 1、概述 哈,今天给大家带...

modabobo 542

Claude Code 使用 OpenAI Codex(GPT-5.3-Codex)完整配置教程

通过 LiteLLM 可以让 Claude Code 调用任何模型,包括:OpenAIDeepSeekGemini本地模型↓↓优点:不依赖 Anthropic API可自由切换模型支持统一 AI Gateway这种“LLM Gateway 架构”正在成为 AI 开发工具的主流实践。

Jacobe_zhao的博客 1万+

不用敲命令!用宝塔面板可视化部署pbootCMS的保姆级教程(2024最新版)

本文提供2024年最新版pbootCMS可视化部署教程,全程使用宝塔面板操作,无需任何命令行知识。从服务器初始化、LNMP环境配置到源码上传、安装向导,手把手指导用户通过图形化界面快速搭建专业网站,适合零基础新手和追求高效建站的用户。

weixin_42509507的博客 490

Android开发之炫酷MD风格,使用ViewPager+Fragment制作Material Design(MD)风格的炫酷引导页...

我记得之前写过一篇关于ViewPager+Fragment制作引导页的Blog。这篇文章实现的效果还不错,但是肯定比不上今天的这篇文章中最后运行的效果。让我们重新使用ViewPager+Fragment,来制作一个Material Design(MD)风格的炫酷引导页吧。引导页,用少量的文字表达出明确的含义,这在引导用户领域是个很讨巧的方法。简单明了的三张图片,就把APP的主要作用功能全面的展示出...

weixin_42506911的博客 742

ArcGIS实战:手把手教你用DEM和灾害点数据,5步搞定地质灾害风险区划图

本文详细介绍了使用ArcGIS进行地质灾害风险评估的完整流程,从DEM和灾害点数据出发,通过五步标准化操作生成专业风险区划图。重点讲解了信息量模型的应用,帮助读者掌握GIS技术在地质灾害易发性评价中的实践方法,提升风险评估效率与准确性。

weixin_30696427的博客 424

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 524

微信删除的聊天记录怎么恢复(2024年最新攻略合集)

随着微信对我们生活中方方面面的渗透,微信已然从一款简单的社交软件过渡成为现时代的一种生活方式,而微信中的聊天记录就是我们和朋友之间历程的最好证明。对此,今天我们来聊聊微信删除的聊天记录怎么恢复的问题。

m0_70960708的博客 944

ViewPager实现应用的欢迎界面

在前一篇博客中介绍了Animation实现应用的欢迎界面,本篇博客介绍ViewPager实现应用的欢迎引导界面,并且实现继续向左滑动最后一张图片进入新的Activity的效果。

Veer Han 2195

【深度学习新浪潮】近三年垂域大模型研究与产品进展全景洞察(2022-2025)

近三年来,垂域大模型完成了从技术探索到产业落地的关键跨越,在多个行业实现效率提升与价值创造。面对数据治理、技术适配、生态建设等挑战,未来需要通过技术创新、标准制定、人才培养等多维度发力,推动垂域大模型向更高效、更可靠、更普惠的方向发展。随着"人工智能+"行动的深入推进,垂域大模型将成为数字经济与实体经济深度融合的核心驱动力,为产业智能化升级注入持续动能。

专注:太空算力、AI infra、异构调度、大模型成本工程 786

巧用ViewPager 打造不一样的广告轮播切换效果

转载请标明出处: http://blog.youkuaiyun.com/lmj623565791/article/details/51339751; 本文出自:【张鸿洋的博客】 一、概述如果大家关注了我的微信公众号的话,一定知道我在5月6号的时候推送了一篇文章,文章名为Android超高仿QQ附近的人搜索展示(一),通过该文可以利用ViewPager实现单页显示多个Item且能够添加一些炫酷的动画效

Hongyang 9万+

霜冰优化算法(RIME)详解:从自然现象到智能优化

霜冰优化算法(RIME)是一种新型元启发式优化算法,灵感源于自然界中霜冰的形成过程。该算法通过模拟软霜和硬霜的不同生长特性,实现了高效的全局探索和局部开发平衡。RIME算法包含三个核心机制:软霜搜索策略模拟随机覆盖特性实现全局探索;硬霜穿刺机制模拟定向生长特性进行局部开发;正向贪婪选择机制确保解的持续优化。与遗传算法、粒子群算法相比,RIME具有参数少、收敛快、自适应平衡等优势,特别适合处理高维复杂优化问题。算法已在工程优化、机器学习等领域获得广泛应用,发表一年内即成为高被引论文。

qq_42212808的博客 780

【OAG vs RAG】RAG的“语义崩溃“:为什么你的知识库越大,AI越笨?_语义检索oag-优快云博客

19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程)·49.9 元(AI 时代成长方法论)。单篇不过瘾?订阅解锁全量源码、实战与答疑;文末附资料包领取方式 ↓图1:RAG语义崩溃概念图。

求知若渴、虚心若愚 71

Android ViewPager动画进阶:18种炫酷翻页效果的完整实现指南

还在为Android应用的ViewPager翻页效果单调而烦恼?用户对应用的视觉体验要求越来越高,传统的滑动切换已经无法满足现代应用的需求。本文将深入探讨Android视图切换动画技术,通过ViewPagerTransforms库实现18种炫酷的翻页效果,帮助开发者打造令人惊艳的用户体验。 **核心关键词**:Android ViewPager动画、翻页效果实现、视图切换技术 **长尾关键词

gitblog_00760的博客 358

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

安卓ViewPager系列自定义效果,助你打造炫酷轮播图——索引。

大家好,我是安卓小菜,在接下来的博客里将为大家带来ViewPager一系列的效果集锦。俗话说万事开头难,第一次写博客分享自己的所得,我也在脑海里构思良久要如何去展示去表达,既不会过于细节导致内容臃肿,也不会过于片面引得读者摸不着头脑。所以,我决定借鉴前辈的方案,在某系列博客之前做一个相关的索引,把将要展示的内容的主题展示在这里,方便读者根据需要一步一步有条不紊的学习。最后,既然是分享博客那就是大家

老杨的博客 1588

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android ViewPager实现软件初次开启的轮播图欢迎特效

多数软件在初次下载开启或者更新后都有一个类似轮播图特效的欢迎界面,如下图: 当滑倒最后一页的时候开启显示开始体验按钮。现在来对这个样子进行实现,代码下有详细解释。 一 样式布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas

码猿同学 2266

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

MultiScrollDemo完全指南:如何用NestedScrollView+ViewPager打造流畅滑动体验

MultiScrollDemo是一个专注于解决Android滑动冲突的开源项目,通过NestedScrollView、ViewPager、RecyclerView和SmartRefreshLayout的组合使用,实现了酷炫的下拉视差效果并完美解决各种滑动冲突问题。本指南将带你快速掌握这个强大工具的核心功能和使用方法。 ## 🌟 项目核心功能与优势 MultiScrollDemo的核心价值在于

gitblog_00658的博客 764

Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器

Android 自定义控件玩转字体变色 打造炫酷ViewPager指示器

sdfwcc的博客 183

2024年安卓最全Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI,2024年最新面试题解析已整理成文档

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2301_82244158的博客 921

android 自定义控件之 RecyclerView 打造万能 ViewPager TabLayout

TabLayoutNiubility 项目地址:AnJiaoDe/TabLayoutNiubility 简介: Android 自定义控件之 RecyclerView 打造万能 ViewPager TabLayout(仿今日头条 Tab 滑动、Tab 多布局、indicator 蠕动、自定义 indicator、文字颜色渐变、自定义 Fragment) 更多:作者提 Bug 标签: tab-tablayout-recyclerview-导航- 文章目录 GitHub:GitH...

未来很长,但我会努力的走下去。 1131

Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI

Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI

sdfwcc的博客 263
上一篇: 本地代码git到github上
下一篇: WebView使用详解(一)——Native与JS相互调用(附JadX反编译)
Hankins_Pan
博客等级 码龄11年 7粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值