【第一部分】历史文章:
Android学习笔记(一)——创建第一个Android项目
Android学习笔记(二)android studio基本控件及布局(实现图片查看器)
Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像)
Android学习笔记(四)Android 中Activity页面的跳转及传值
Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单
Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务
Android学习笔记(七)——数据存储(共享参数SharedPreferences)
Android学习笔记(八)——数据存储(SD卡文件操作)
Android学习笔记(九)——网络技术
Android学习笔记(十)——实现新闻列表案例
Android学习笔记(十一)——一些高级控件的使用
Android学习笔记(十二)——数据存储(SQLite数据库)
Android学习笔记(十三)——数据存储(LitePal操作数据库)
Android学习笔记(十四)——内容提供器
【第二部分】主要问题解决:
Android Studio(存)读取不了SD卡上的文件——【已解决】
案例来源:2020-5-14 Android课堂案例
Viewpager
即视图翻页工具,提供了多页面切换的效果。Viewpager
使用起来就是我们通过创建adapter
给它填充多个view
,左右滑动时,切换不同的view
。
ViewPager使用步骤:
- 在布局文件中定义ViewPager组件(android.support.v4.view.ViewPager节点)。
- 在Activity中设置ViewPager中放置的view内容。
- 给ViewPager对象设置适配器(PagerAdapter)。
ViewPager
的适配器是PagerAdapter
,它是基类。提供适配器来填充ViewPager
的内部。一般做法都是继承PagerAdapter
,自定义一个MyAdapter
。
也可以使用一个更具体的实现,如FragmentPagerAdapter
或FragmentStatePagerAdapter
。谷歌官方推荐ViewPager和Fragment一起使用。当然在3.0以下版本中,没有必要这么做。
下面是一个具体的案例来演示具体的使用:
1、创建布局文件activity_main.xml
。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="cn.edu.hznu.ex7_0.MainActivity">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewPager"></android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/dotsLayout"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="80dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:adjustViewBounds="true"
android:src="@drawable/dots"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:adjustViewBounds="true"
android:src="@drawable/dots"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:adjustViewBounds="true"
android:src="@drawable/dots"/>
</LinearLayout>
</RelativeLayout>
2、自定义选择器。
dots.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/dot_0" />
<item android:state_enabled="true" android:drawable="@drawable/dot_1"/>
</selector>
3、自定义适配器MyPagerAdapter,并且继承PagerAdapter
。
重写的方法有:
getCount()
:获取当前窗体的界面数。isViewFromObject(View, Object)
:判断是否由对象生成界面。instantiateItem(ViewGroup, int)
:返回对象表明了PagerAdapter适配器选择哪个对象放在当前的ViewPager中destroyItem(ViewGroup, int, Object)
:ViewGroup中移出当前View。
MyPagerAdapter.java
package cn.edu.hznu.ex7_0.adapter;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
public class MyPagerAdapter extends PagerAdapter {
//添加属性和构造方法
private ArrayList<View> views;
public MyPagerAdapter(ArrayList<View> views) {
this.views = views;
}
public int getCount(){
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position));
return views.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
}
}
4、编写MainActivity.java
。
package cn.edu.hznu.ex7_0;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import cn.edu.hznu.ex7_0.adapter.MyPagerAdapter;
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private ArrayList<View> views=new ArrayList<>();
private MyPagerAdapter adapter;
private LinearLayout dotsLayout;
private int[] slideID=new int[]{R.drawable.slide1,R.drawable.slide2,R.drawable.slide3};
private ImageView[] dots=new ImageView[3];
private int curPage=0;
private SharedPreferences spf;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spf= PreferenceManager.getDefaultSharedPreferences(this);
editor=spf.edit();
boolean flag=spf.getBoolean("flag",false);
if(flag==false){
editor.putBoolean("flag",true);
editor.commit();
}else{
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
viewPager=(ViewPager)findViewById(R.id.viewPager);
dotsLayout=(LinearLayout) findViewById(R.id.dotsLayout);
initViews();
adapter=new MyPagerAdapter(views);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}sh
@Override
public void onPageSelected(int position) {
dots[position].setEnabled(false);
dots[curPage].setEnabled(true);
curPage=position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void initViews() {
for (int i=0;i<slideID.length;i++){
ImageView image=new ImageView(this);
image.setImageResource(slideID[i]);
views.add(image);
}
for(int i=0;i<dots.length;i++){
dots[i]= (ImageView) dotsLayout.getChildAt(i);
dots[i].setEnabled(true);
dots[i].setTag(i);
dots[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position= (int) v.getTag();
viewPager.setCurrentItem(position);
//curPage=position;
}
});
}
dots[curPage].setEnabled(false);
views.get(2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
}
5、效果展示。
功能说明:
- 当我们滑动到最后一张图像时,点击图像跳转到第二个活动中。
- 当首次启动项目时,显示该活动,否则,则会直接跳转到第二个活动中。(SharedPreferences实现)
private SharedPreferences spf= PreferenceManager.getDefaultSharedPreferences(this);
private SharedPreferences.Editor editor=spf.edit();
boolean flag=spf.getBoolean("flag",false);
if(flag==false){
editor.putBoolean("flag",true);
editor.commit();
}else{
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
若文章中有错误的地方欢迎大家反馈或者留言,十分感谢!!!