君不见长松卧壑困风霜,时来屹立扶明堂。这篇文章主要讲述Android 引导页的代码相关的知识,希望能为你提供帮助。
【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)(dpvaluescale+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);
}
}
?xml>
推荐阅读
- AndroidAlertDialog各种弹框代码
- LeetCode-42-Trapping Rain Water
- Approximate timing for various operations on a typical PC
- Android Api 27 在 Android 8.0 上出现 Only fullscreen opaque activities can request orientation 的解决情况(代码片
- Android的对话框DialogFragment指定弹窗口大小,设置圆角
- Saliency Detection: A Spectral Residual Approach
- No mapping found for HTTP request with URI [/spring_liu/hello.do] in DispatcherServlet with name 
- ???Android???11.0 UI?????????????????????????????????ListView???????????????2
- Android内存泄漏的检测流程捕捉以及分析