刚做完一个比赛项目,来写点以后能用着的东西–Android客户端的首次启动页面,而且这个以后复用的几率很大,也不怎么修改,特留下为以后准备,同时为初学者提供一个帮助。
实现思路是:用SharedPreferences保存一个首次登陆的信息,默认是true,进入MainActivity后对其经行赋flase保存,把GuideActivity作为软件的启动界面,如果是第一次启动,就初始化该activity,不是的话直接跳转到应用主界面activity,这里有些不合理,启动界面如果设置成一个每次app启动都显示的界面最好了,这不是重点,我也就没实现。
首先使用viewpager实现
首先是引导页的布局文件:直接加入ViewPager就可以了,下面的LinearLayout是底部的小圆圈
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54<?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:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:id="@+id/ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="24.0dp" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:clickable="true" android:padding="15.0dip" android:src="@drawable/dot" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:clickable="true" android:padding="15.0dip" android:src="@drawable/dot" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:clickable="true" android:padding="15.0dip" android:src="@drawable/dot" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:clickable="true" android:padding="15.0dip" android:src="@drawable/dot" /> </LinearLayout> </RelativeLayout>
这个是引导界面的activity代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144package com.example.yasin.ndklearn; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; /** * * @{# GuideActivity.java Create on 2013-5-2 下午10:59:08 * * class desc: 引导界面 * * <p> * Copyright: Copyright(c) 2013 * </p> * @Version 1.0 * @Author <a href="mailto:gaolei_xj@163.com">Leo</a> * * */ public class GuideActivity extends AppCompatActivity implements OnPageChangeListener { private ViewPager vp; private ViewPagerAdapter vpAdapter; private List<View> views; // 底部小点图片 private ImageView[] dots; // 记录当前选中位置 private int currentIndex; Boolean isFirst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.guide_layout); // 初始化页面 initViews(); // 初始化底部小点 initDots(); } private void initViews() { SharedPreferences pref = getSharedPreferences("first",Activity.MODE_PRIVATE); isFirst = pref.getBoolean("status",true); if(!isFirst){ Intent intent = new Intent(this,MainActivity.class); startActivity(intent); finish(); } LayoutInflater inflater = LayoutInflater.from(this); RelativeLayout guideFour = (RelativeLayout) inflater.inflate(R.layout.guide_four, null); guideFour.findViewById(R.id.toMain).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(GuideActivity.this,MainActivity.class); startActivity(intent); finish(); } }); views = new ArrayList<View>(); // 初始化引导图片列表 views.add(inflater.inflate(R.layout.guide_one, null)); views.add(inflater.inflate(R.layout.guide_two, null)); views.add(inflater.inflate(R.layout.guide_three, null)); views.add(guideFour); // 初始化Adapter vpAdapter = new ViewPagerAdapter(views, this); vp = (ViewPager) findViewById(R.id.viewpager); vp.setAdapter(vpAdapter); // 绑定回调 vp.setOnPageChangeListener(this); } private void initDots() { LinearLayout ll = (LinearLayout) findViewById(R.id.ll); dots = new ImageView[views.size()]; // 循环取得小点图片 for (int i = 0; i < views.size(); i++) { dots[i] = (ImageView) ll.getChildAt(i); dots[i].setEnabled(true);// 都设为灰色 } currentIndex = 0; dots[currentIndex].setEnabled(false);// 设置为白色,即选中状态 } private void setCurrentDot(int position) { if (position < 0 || position > views.size() - 1 || currentIndex == position) { return; } dots[position].setEnabled(false); dots[currentIndex].setEnabled(true); currentIndex = position; } // 当滑动状态改变时调用 @Override public void onPageScrollStateChanged(int arg0) { } // 当当前页面被滑动时调用 @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } // 当新的页面被选中时调用 @Override public void onPageSelected(int arg0) { // 设置底部小点选中状态 setCurrentDot(arg0); } }
ViewPager中要实现一个ViewpagerAdapter类,对其进行页面的设置
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72package com.example.yasin.ndklearn; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.List; /** * Created by Yasin on 2016/3/2. * * * @{# ViewPagerAdapter.java Create on 2013-5-2 下午11:03:39 * * class desc: 引导页面适配器 * * <p> * Copyright: Copyright(c) 2013 * </p> * @Version 1.0 * @Author <a href="mailto:gaolei_xj@163.com">Leo</a> * * */ public class ViewPagerAdapter extends PagerAdapter { // 界面列表 private List<View> views; private AppCompatActivity activity; public ViewPagerAdapter(List<View> views, AppCompatActivity activity) { this.views = views; this.activity = activity; } //加载viewpager的每个item @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(views.get(position),0); return views.get(position); } //删除ViewPager的item @Override public void destroyItem(ViewGroup container, int position, Object object) { // super.destroyItem(container, position, object); container.removeView(views.get(position)); } // 获得当前界面数 @Override public int getCount() { if (views != null) { return views.size(); } return 0; } //官方推荐这么写,没研究。。。。 @Override public boolean isViewFromObject(View view, Object object) { return view == object; } }
效果图
代码下载地址:Android客户端启动引导界面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持靠谱客。
最后
以上就是感性宝马最近收集整理的关于Android客户端首次启动引导界面的全部内容,更多相关Android客户端首次启动引导界面内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复