布局代码

<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);

}

}

最新文章

  1. 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法
  2. (分享)视频压缩Free Video Compressor 汉化版/中文版【全网唯一】
  3. 捉襟见肘之UIView中contentMode属性
  4. 第2章 面向对象的设计原则(SOLID):5_迪米特法则
  5. platform_device与platform_driver
  6. (Foundation)NSObject 、 NSString 、 NSMutableString
  7. 主键、外键、超键、候选键的区别【Written By KillerLegend】
  8. qmake使用实践:包含动态库的Qt4工程
  9. iOS推送跳转AppDelegate跳转VC
  10. parquet列式文件实战
  11. angular 选中切换面板
  12. oracle ebs应用产品安全性-数据访问权限集
  13. ubuntu18.04 安装pip3
  14. Java笔记Spring(五)
  15. eclipse 打包
  16. AS3 - 对文件和目录的操作
  17. 【题解】 [SCOI2011]糖果 (差分约束)
  18. Linux 并发链接数
  19. IIS 访问不了,IIS有问题,IIS右击浏览没反应
  20. wepy中如何使用stylus等样式预处理器

热门文章

  1. container/injection简介以及发展历史
  2. USB描述符(转)
  3. 【译文】使用webpack提高网页性能优化
  4. python xlwings Excel 内容截图
  5. Description Resource Path Location Type cvc-complex-type.2.4.c: The matching 解决问题
  6. 用 Java 实现人脸识别功能(附源码)
  7. 由一个项目需求引发的 - textarea中的换行和空格
  8. Spring Cloud Feign 优雅的服务调用
  9. redis系列之------过期策略
  10. 第八章、小节二vuex