【第一部分】歷史文章:
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);
}
若文章中有錯誤的地方歡迎大家反饋或者留言,十分感謝!!!