Android上实现一个简单的天气预报APP(十三) 导航ViewPager
来源:互联网 发布:淘宝店怎么提升销量 编辑:程序博客网 时间:2024/05/01 17:10
学习参考资源:https://www.gitbook.com/book/zhangqx/mini-weather/details
ViewPager是安装软件后,第一次打开软件时展示的导航。
1)在进入天气界面之前,先进入导航界面
1.建立一个导航布局
guide.xml一个布局文件
<?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"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center"> <Button android:id="@+id/startAppBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="GO!!"/> </LinearLayout></RelativeLayout>
2.新建一个继承自Activity的java类
我新建了一个名为Guide.java的java类,获取了布局中的Button,并定义点击动作,点击时,启动MainActivity这个Activity。
public class Guide extends Activity { private Button startB; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.guide); startB = (Button)findViewById(R.id.startAppBtn); startB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Guide.this,MainActivity.class); startActivity(intent); finish(); } }); }}
运行一下!
2)使用ViewPager展示滑动的启动界面
1.新建三个新的布局
我分别命名为guide_page01,guide_page02,guide_page03,让他们背景色不同,以便我们观察程序效果
guide_page01
guide_page02
guide_page03,page03是我们预想的ViewPager的最后一个界面,因此我们在这里设置了一个button,以便点击button进入天气界面。
guide.xml,将原来放在guide布局中的button组件放到guide_page03中,并新增viewPager组件
<?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.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF"> </android.support.v4.view.ViewPager></RelativeLayout>
2.新建一个继承自PageAdapter的类
package com.example.xchen.mweather;/** * Created by xchen on 16/12/22. */import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.List;public class ViewPagerAdapter extends PagerAdapter { private List<View> views; private Context context; public ViewPagerAdapter(List<View> views,Context context) { this.views = views; this.context = context; } @Override public int getCount() { return views.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(views.get(position)); return views.get(position); } @Override public boolean isViewFromObject(View view, Object object) { return (view == object); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeViewAt(position); }}
3.在Guide.java中定义ViewPager相关变量,并赋值。将获取guide_page03中的Button组件,并绑定动作。
运行一下!
滑动到page3,点击按钮,进入天气界面
3)新增page滑动动作响应
1.我们现有两张图片,一张表示page未被选中,一张表示被选中。
2.在Guide.xml布局文件中,新增三个ImageView组件
<?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.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF"> </android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentBottom="true" android:gravity="center_horizontal"> <ImageView android:id="@+id/pointImg1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/page_indicator_focused"/> <ImageView android:id="@+id/pointImg2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/page_indicator_unfocused"/> <ImageView android:id="@+id/pointImg3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/page_indicator_unfocused"/> </LinearLayout></RelativeLayout>
3.设置动作
package com.example.xchen.mweather;import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.util.ArrayList;import java.util.List;/** * Created by xchen on 16/12/22. */public class Guide extends Activity implements ViewPager.OnPageChangeListener{ private List<View> views; private ViewPagerAdapter viewPagerAdapter; private ViewPager viewPager; private Button startB; private ImageView[] dots; private int[] id={R.id.pointImg1,R.id.pointImg2,R.id.pointImg3}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.guide); SharedPreferences sharedPreferences = getSharedPreferences("viewpagedate",Activity.MODE_PRIVATE); if(sharedPreferences.getInt("time",0)==8)// { Intent intent = new Intent(Guide.this,MainActivity.class); startActivity(intent); finish(); }else { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("time", 8);//0 editor.commit(); } initViews(); initDots(); startB = (Button)views.get(2).findViewById(R.id.startAppBtn); startB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Guide.this,MainActivity.class); startActivity(intent); finish(); } }); } private void initViews() { LayoutInflater lf = LayoutInflater.from(this); views = new ArrayList<View>(); views.add(lf.inflate(R.layout.guide_page01,null)); views.add(lf.inflate(R.layout.guide_page02,null)); views.add(lf.inflate(R.layout.guide_page03,null)); viewPagerAdapter = new ViewPagerAdapter(views,this); viewPager = (ViewPager)findViewById(R.id.viewpager); viewPager.setAdapter(viewPagerAdapter); viewPager.setOnPageChangeListener(this); } private void initDots() { dots = new ImageView[views.size()]; for(int i=0;i< views.size();i++) { dots[i] = (ImageView)findViewById(id[i]); } } @Override public void onPageSelected(int position) { for(int i=0;i<id.length;i++) { Log.d("page select id",Integer.toString(i)); if(i==position) { dots[i].setImageResource(R.drawable.page_indicator_focused); }else{ dots[i].setImageResource(R.drawable.page_indicator_unfocused); } } } @Override public void onPageScrollStateChanged(int state) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }}
运行一下!
4)让ViewPager只在安装APP后第一次运行时启动
用SharePreference存储一个数据,用来表示是否时第一次启动APP
运行一下!
发现只有第一次打开APP时会展示ViewPager。
0 0
- Android上实现一个简单的天气预报APP(十三) 导航ViewPager
- Android上实现一个简单的天气预报APP(一) 设计
- Android上实现一个简单的天气预报APP(十五) 发布天气预报APP
- Android上实现一个简单的天气预报APP(十二) 未来三天的天气预报
- Android上实现一个简单的天气预报APP(十一) Preference存储最近一次查询的城市
- Android上实现一个简单的天气预报APP(二) 配置布局
- Android上实现一个简单的天气预报APP(三) 获取网络数据
- Android上实现一个简单的天气预报APP(四) 添加按钮点击响应
- Android上实现一个简单的天气预报APP(五) 解析XML
- Android上实现一个简单的天气预报APP(六) 更新界面数据
- Android上实现一个简单的天气预报APP(八) 从数据库读取城市数据
- Android上实现一个简单的天气预报APP(十) 城市列表搜索框
- Android上实现一个简单的天气预报APP(十四) 使用百度API定位城市
- Android上实现一个简单的天气预报APP(七) 切换到新的界面(选择城市界面)
- Android上实现一个简单的天气预报APP(九) ListView展示城市列表、单击更新天气数据
- Android 端天气预报APP的实现(四)使用ViewPager展示天气数据
- Android 快速实现 ViewPager 滑动页卡切换(可用作整个 app上导航)
- Android 快速实现 ViewPager 滑动页卡切换(可用作整个 app上导航)
- 判断素数(质数)
- Linux下MySQL自启动
- RocketMQ原理以及源码解析目录介绍
- ScrollView下的UITextField系统手写输入法造成崩溃的解决办法
- php的4种常用运行方式
- Android上实现一个简单的天气预报APP(十三) 导航ViewPager
- 分区表更改默认表空间及移动现有分区到指定表空间
- 前端跨域的几种方式
- Git与TortoiseGit基本操作
- swap函数的泛型
- android 解决部分手机连接热点wifi导致被切换,enablenetwork(netID, true)无效的问题
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
- UDP接收实例
- Android前端判断敏感词汇