Android 引导页的代码

布局代码

<android.support.v4.view.ViewPager
    android:id="@+id/viewpage"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
<!--android:background="@drawable/btnselector"-->
<Button
    android:id="@+id/btnty"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="100dp"
    android:background="@drawable/btnselector"
    android:paddingLeft="30dp"
    android:paddingRight="30dp"
    android:visibility="gone"
    android:text="立即体验"
    android:textColor="@drawable/textselector"
    android:textSize="20sp" />

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="80dp">

    <LinearLayout
        android:id="@+id/linearpointgroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" />
    <ImageView
        android:id="@+id/ivredpoint"
        android:background="@drawable/pointred"
        android:layout_width="10dp"
        android:layout_height="10dp" />

</RelativeLayout>

后台代码

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

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

public class GuideActivity extends Activity {

List<ImageView> imageViews;
ViewPager vpage;
LinearLayout linearLayout;
ImageView imagepoint;
int leftmax = 0;
Button btnty;

int pointwidth=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
vpage = (ViewPager) findViewById(R.id.viewpage);
linearLayout = (LinearLayout) findViewById(R.id.linearpointgroup);
imagepoint = (ImageView) findViewById(R.id.ivredpoint);
//10为 默认点的 布局宽度
pointwidth=DensityUtil.diptopx(GuideActivity.this,10);
btnty = (Button) findViewById(R.id.btnty);
int[] intimage = new int[]{R.drawable.guide1, R.drawable.guide2, R.drawable.guide3};
imageViews = new ArrayList<>();
for (int ii = 0; ii < intimage.length; ii++) {
ImageView imageView = new ImageView(GuideActivity.this);
imageView.setBackgroundResource(intimage[ii]);
imageViews.add(imageView);
//创建点

        ImageView point = new ImageView(GuideActivity.this);
        point.setBackgroundResource(R.drawable.point);
        //此处单位是像素 需要做大小手机的适配 调用转换成像素的方法
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(pointwidth, pointwidth);
        if (ii != 0) {
            params.leftMargin = pointwidth;
        }
        point.setLayoutParams(params);
        linearLayout.addView(point);
    }
    vpage.setAdapter(new pagetadapter());

    Button btn = (Button) findViewById(R.id.btnty);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //设置缓存  进入过主界面
            CacheParam.setkey(GuideActivity.this, "EnterMain", true);
            Intent intent = new Intent(GuideActivity.this, LogInActivity.class);
            startActivity(intent);
            finish();
        }
    });

    imagepoint.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            //执行一次即可 所以 先移除
            imagepoint.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            //间距 = 第一个点距离左边的距离-第0个点距离左边的距离
            leftmax = linearLayout.getChildAt(1).getLeft() - linearLayout.getChildAt(0).getLeft();
        }
    });
    vpage.setOnPageChangeListener(new MyPageChange());
}

class MyPageChange implements ViewPager.OnPageChangeListener {
    //当也没滑动的时候调用
    /*
     * 当前滑动页面的位置
     * 页面滑动的百分比
     * 滑动的像素*/
    @Override
    public void onPageScrolled(int position, float positionoffset, int positionoffsetpixels) {

//两点间滑动距离对应的坐标=原来的起始位置+两点间移动的距离
int leftmargin = (int) (position * leftmax + (positionoffset * leftmax));

        RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) imagepoint.getLayoutParams();
        params.leftMargin = leftmargin;
        imagepoint.setLayoutParams(params);
    }

    /**
     * 当页面选中的时候调用这个方法
     * 被选中页面的位置
     */
    @Override
    public void onPageSelected(int position) {
        //最后一个页面
        if (position == imageViews.size() - 1) {
            btnty.setVisibility(View.VISIBLE);
        } else//其他页面
        {
            btnty.setVisibility(View.GONE);
        }
    }

    /**
     * 当页面滑动状态变化的时候
     */
    @Override
    public void onPageScrollStateChanged(int i) {

    }
}

class pagetadapter extends PagerAdapter {

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

    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = imageViews.get(position);
        container.addView(imageView);
        return imageView;

    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view == o;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

// super.destroyItem(container, position, object);
container.removeView((View) object);
}

}

}

import android.content.Context;

public class DensityUtil {
/
根据手机的分辨率 从dip的单位 转为px 像素/
public static int diptopx(Context context,float dpvalue)
{
final float scale=context.getResources().getDisplayMetrics().density;
return (int)(dpvalue
scale+0.5f);
}
/
根据手机的分辨率 从px的单位 转为dip
* */
public static int pxtodip(Context context,float pxvalue)
{
final float scale=context.getResources().getDisplayMetrics().density;
return (int)(pxvalue/scale+0.5f);
}

}

原文地址:https://www.cnblogs.com/lzsin/p/10363548.html

时间: 2024-10-02 09:44:07

Android 引导页的代码的相关文章

Android引导页设计

大家在安装好一个应用后,第一次打开时往往会出现一个使用引导页,形式一般为三.四张图片,随着我们的滑动进行切换,在最后一页会有一个进入应用的按钮,我们通过点击这个按钮可以进入应用,其实这其中没有太多的复杂的地方,切换的完成就是一个ViewPager,说了这么多,下面开始为大家解读代码: 开始我们的设计之前我们需要做一些准备工作,首先我们新建一个工程,然后选择工程通过右键单击properties,然后选择Java Build Path,点击右侧Libraries,再点击Add jar,将我们工程li

Android 引导页公共方法LeaderPager

SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 引导页是我们开发app很常用的功能,但是一般都是第一此运行才会执行,每写个项目 都要为这种一次性的东西写那么多重复代码太讨厌啦- 现在再也不用担心这个问题了! 一般引导有两种图片源 , 本地图片/ 网络图片 目标使用方法: 使用本地提供的图片 id 参数一: viewpager 参数二: 图片url集合(使用本地则传null) 参

Android引导页的实现

实现原理:使用ViewPager控件(com.android.support:support-v4:22.1.1),把引导页的layout文件放进ViewPager控件就可以了. ViewPager控件本质上也是个列表控件,横向滚动,一个页面一个页面的滚动,底下并没有滚动条,所以非常适合做引导页,和页签的tap控件来做横向滚动的页面也非常常用. 首先引用 com.android.support:support-v4:22.1.1 引导页面的layout <RelativeLayout xmlns

Android引导页Splash设计

Android_Splash引导页就是在应用第一次安装时用来介绍应用的部分功能的动画页面,让用户大致的了解这个应用有啥功能.当用户首次安装时会有引导页面,用户下次启动的时候,就会直接进入主页面. SpUtils.java package com.zwb.splashdemo.utils; import android.content.Context; import android.content.SharedPreferences; /** * 类描述:SharedPreferences工具类

Xamarin.Android 引导页

http://blog.csdn.net/qq1326702940/article/details/78665588 https://www.cnblogs.com/catcher1994/p/5554456.html 第一次安装的APP,一般都会浏览几张引导图片,才进入APP 1.界面布局 [html] view plain copy <?xml version="1.0" encoding="utf-8"?> <RelativeLayout x

推荐4个Android引导页控件

Guideshow 快速实现引导页, 2015-08-03 更新 CircleIndicator 一个轻量级的viewpager指示器 ,类似于nexus5 启动器的效果 2015-08-02 更新 XhsWelcomeAnim 小红书欢迎引导第二版 2015-07-10 更新 AppIntro 非常简洁.漂亮的引导页控件,使用简单 2015-07-07 更新 http://www.see-source.com/androidwidget/list.html

01-09 引导页(代码)

// //  GuideViewController.m //  XuanMiLaywer // //  Created by MYMAc on 15/7/30. //  Copyright (c) 2015年 zhiyou. All rights reserved. // #import "GuideViewController.h" #import "AppDelegate.h" #import "LoginViewController.h"

引导页实现代码--iOS

@interface PJXPushGuideView : UIView +(instancetype)guideView; +(void)show; @end #import "PJXPushGuideView.h" @implementation PJXPushGuideView +(instancetype)guideView{ //加载xib PJXPushGuideView *guideView = [[[NSBundle mainBundle]loadNibNamed:NS

Android 1分钟教你打造酷炫的引导页(实现ViewPager淡入淡出切换)

纯手工自制的Android引导页,实现了Viewpager切换的淡入淡出(页面不移动!)切换以及文字动画. 下面是效果演示: 实现思路+心路历程...: 其实别的都还蛮简单的,就是这个ViewPager的淡入淡出切换动画比较棘手,以前都没有做过,然后去网上找了好久好久. 其中碰到各种坑无数,大概90%的人是引的 JazzyViewPager的包然后就balabala说自己实现了种种功能,真是醉了.... 结论是国内根本找不到这个效果的实现嘛.... 然后 在Github下了JazzyViewPa