https://github.com/apl-devs/AppIntro/issues/264
在添加之前会出现这样的一个错误。
ArrayIndexOutOfBoundsException
需要删除的appintro的oncrate方法中的
PersistentBundle
remove PersistentBundle argument from your OnCreate method.
https://github.com/apl-devs/AppIntro/wiki/How-to-Use#show-the-intro-once
这是官网的教程。
@0 添加 根目录下的
allprojects {
repositories {
jcenter()
maven { url 'https://jitpack.io' }
}
}
app目录下的
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.github.apl-devs:appintro:v4.2.0'
}
@1 生成一个SampleSlide文件。https://github.com/apl-devs/AppIntro/blob/master/example/src/main/java/com/amqtech/opensource/appintroexample/util/SampleSlide.java
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SampleSlide extends Fragment {
private static final String ARG_LAYOUT_RES_ID = "layoutResId";
private int layoutResId;
public static SampleSlide newInstance(int layoutResId) {
SampleSlide sampleSlide = new SampleSlide();
Bundle args = new Bundle();
args.putInt(ARG_LAYOUT_RES_ID, layoutResId);
sampleSlide.setArguments(args);
return sampleSlide;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null && getArguments().containsKey(ARG_LAYOUT_RES_ID)) {
layoutResId = getArguments().getInt(ARG_LAYOUT_RES_ID);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
return inflater.inflate(layoutResId, container, false);
}
}
@2新建一个引导页文件
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import com.github.paolorotolo.appintro.AppIntro;
/**
* Created by mt on 6/19/17.
*/
public class appintros extends AppIntro {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addSlide(SampleSlide.newInstance(R.layout.slideone));
addSlide(SampleSlide.newInstance(R.layout.slidetwo));
addSlide(SampleSlide.newInstance(R.layout.slidethree));
// setFadeAnimation();
setFlowAnimation();
showSkipButton(false);
// showDoneButton(false);
//showSkipButton(false);
}
@Override
public void onSkipPressed(Fragment currentFragment) {
super.onSkipPressed(currentFragment);
//finish();
}
@Override
public void onDonePressed(Fragment currentFragment) {
super.onDonePressed(currentFragment);
finish();
}
@Override
public void onSlideChanged(@Nullable Fragment oldFragment, @Nullable Fragment newFragment) {
super.onSlideChanged(oldFragment, newFragment);
// finish();//这里需要注释掉
}
}
并添加到配置文件中。
@3 主文件让引导页显示一次。
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// Initialize SharedPreferences
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
// Create a new boolean and preference and set it to true
boolean isFirstStart = getPrefs.getBoolean("firstStart", true);
// If the activity has never started before...
if (isFirstStart) {
// Launch app intro
Intent intent = new Intent(MainActivity.this, appintros.class);
startActivity(intent);
// Make a new preferences editor
SharedPreferences.Editor e = getPrefs.edit();
// Edit preference to make it false because we don't want this to run again
e.putBoolean("firstStart", false);
// Apply changes
e.apply();
}
}
});
// Start the thread
t.start();
@4j最后新建引导页布局文件即可。