• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > App引导界面,可以这么玩

App引导界面,可以这么玩

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了app引导界面,手机app引导界面,app引导界面设计,手机app ui界面设计,商城app界面等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

App引导界面,可以这么玩


什么是ViewPager,刚一听到这个词,我们可能感觉很奇怪,但是我相信我们大部分人都曾见到过这些界面的。其实它就是我们在安装好一个app之后第一次使用时的那些引导界面的效果。这就是通过ViewPager来完成滴。今天,就让我们一起走进ViewPager的世界吧。


理论基础


其实说是理论基础,也只不过是一些小知识点罢了,所以不要紧张咯。ViewPager在ADT开发时使用到了android.support.v4.view.ViewPager控件,我们需要知道这点就可以了。 我们可以把ViewPager看作是一个ListView样式的控件,然后按照对待ListView的眼光来看待ViewPager,就会很轻松了。 ListView需要一个适配器,而ViewPager同样也是如此;ListView需要注册Item的事件侦听,ViewPager同样如此。至于底层的细节我们稍后再说。

了解了上面的这些,相信我们心中都有了一个大致的了解了吧。那我们就正式开始咯。

ViewPager怎么使用?


首先我们需要在XML文件中进行声明,注意我们引用的是android.support.v4.view.ViewPager控件哦,如下:

 

然后是在Java代码中findViewById一下,免得出现NullPointerExcetion.
了解到了ViewPager是一个View的容器,那么我们当然要有View才行了,所以我们在layout文件夹下创建几个用于呈现的view。由于比较相似,我这里就仅仅写出一个XML文件吧。




    

    

        

现在万事俱备,只欠东风了。所以我们就需要创建一个适配器了,这里需要注意的是适配器要继承自PagerAdapter ,具体的代码如下:

package com.mark.viewpagerdemo;

import java.util.List;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;

/**
 * 这个类的作用就是对于ViewPager的Activity(View)的切换的
 * 时候需要的一个适配器的作用,其实ViewPager的原理就可以看作是一个ListView就行了
 * @author lhdn
 *
 */
public class ViewPageAdapter extends PagerAdapter{

    //list是为了存储容器中的view,context的作用就是上下文
    private List views;
    private Context context;

    public ViewPageAdapter(List mViews , Context mContext) {
        this.context = mContext;
        this.views = mViews;
    }

    /**
     * 将不需要呈现的view及时的销毁
     */
    @Override
    public void destroyItem(View container, int position, Object object) {
        ((ViewPager) container).removeView(views.get(position));
    }

    /**
     * 该方法的作用类似于ListViewAdapter的那个getView的作用
     */
    @Override
    public Object instantiateItem(View container, int position) {
        ((ViewPager) container).addView(views.get(position));
        return views.get(position);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return views.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // 判断当前获得的view是不是我们想要得到的view
        return (arg0 == arg1);
    }

}

其中方法:

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

就好比我们的ListViewAdapter的getView方法。功能就是获得一个view,即可。

如果不需要在图片上添加效果的话,这样其实就已经是搞定了,我们可以测试一下效果,发现这个小案例已经是可行的了。


ViewPager添加一些效果


所谓添加效果,就是添加上几个小圆点,比如我们滑动View的时候下面会出现的一些小亮点和小暗点等,其目的是为了显示我们确实滑动了ViewPager,也为了美观嘛。那么我们要怎么实现呢?答案就是使用ImageView就可以了,但是切记只需要在ViewPager所在的界面进行添加就可以了,而不需要为其他的XML文件进行添加。然后我们在ViewPager的OnPageChangeListener处理事件中进行相关的设置就可以了。如下:





    
    

    

        

        

        
    


package com.mark.viewpagerdemo;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class Guide extends Activity implements OnPageChangeListener {

    private ViewPager vp;
    // 因为viewpager的使用要街注意一个适配器,所以要创建一个适配器的对象
    private ViewPageAdapter vpAdapter;
    // 创建一些视图View,用于放置到我们的ViewPager容器中
    private List views;
    // 存储图像的小点
    private ImageView[] dots;
    // 图片小点的ID值
    int[] ids = new int[] { R.id.iv1, R.id.iv2, R.id.iv3 };

    private Button enter ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guide);
        initViews();
        initDots();
    }

    /**
     * 初始化ViewPager机器内部的view视图
     */
    public void initViews() {
        views = new ArrayList();
        LayoutInflater inflater = LayoutInflater.from(this);
        // 向ViewPager中添加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));

        // 为进入主界面的按钮申请资源,由于button的值在第三个view中,而这里是Guide的
        // 所以,要先得到第三个view之后,才能使用findViewById()方法
        enter = (Button) views.get(2).findViewById(R.id.start_btn);
        enter.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Guide.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        });

        // 创建ViewPager以及添加适配器
        vp = (ViewPa



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • App引导界面,可以这么玩

相关文章

  • 2017-05-26我的第一篇博客,我试试怎么用,第一篇博客,试试
  • 2017-05-26手机安全卫士——病毒查杀,安全卫士病毒查杀
  • 2017-05-26android中生成excel
  • 2017-05-26Cordova系列学习教程02 开发环境的准备和运行
  • 2017-05-26Glide,glideandroid
  • 2017-05-26android插件开发-就是你了!启动吧!插件的activity(二)
  • 2017-05-26Android源码之陌陌源码,android源码
  • 2017-05-26android 特殊用户通知用法汇总--Notification源码分析
  • 2017-08-23Android下文件的压缩和解压(Zip格式)
  • 2017-07-23Android设计模式(十六)-中介者模式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android 中基于 Binder的进程间通信,androidbinder
    • Android--httpclient模拟post请求和get请求分析
    • 基于zookeeper的主备切换方法
    • android 8.0 应用启动崩溃?
    • android launchmode 使用场景
    • Android通过achartengine画折线图,achartengine折线图
    • 安卓开发学习经历2--《第一行代码》coolweather项目SQL语句同一个“陷阱”掉两次 注意转义字符等特殊字符正确书写 关于Id字段自增加体会,coolweather
    • Android手机输入法按键监听-dispatchKeyEvent
    • Android-Universal-Image-Loader (图片异步加载缓存库)对Bitmap的优化处理
    • Android之网络编程利用PHP操作MySql插入数据(四),androidmysql

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有