安卓Andriod使用入门(二十一)【视差效果引导页】
来源:互联网 发布:杭州市行知小学校歌 编辑:程序博客网 时间:2024/06/04 19:43
如果你明明知道这个故事的结局,你或者选择说出来,或者装作不知道,万不要欲言又止。有时候留给别人的伤害,选择沉默比选择坦白要痛多了。
SelectorActivity.java代码:
package siso.slidingt.selector;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import siso.slidingt.MainActivity;import siso.slidingt.R;public class SelectorActivity extends ListActivity implements AdapterView.OnItemClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.app_name); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.options, android.R.layout.simple_list_item_1); setListAdapter(adapter); getListView().setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: MainActivity.start(this); break; case 1: MainActivity.start(this); break; } }}
MainActivity.java代码:
package siso.slidingt;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.annotation.LayoutRes;import android.support.annotation.NonNull;import android.support.v4.content.ContextCompat;import android.view.View;import android.widget.Toast;import siso.stlib.Direction;import siso.stlib.IndicatorOptions;import siso.stlib.PageOptions;import siso.stlib.TransformItem;import siso.stlib.TutorialFragment;import siso.stlib.TutorialOptions;import siso.stlib.TutorialPageOptionsProvider;public class MainActivity extends Activity implements View.OnClickListener { private static final int TOTAL_PAGES = 6; private static final int ACTUAL_PAGES_COUNT = 3; private int[] mPagesColors; public static void start(Context context) { context.startActivity(new Intent(context, MainActivity.class)); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.bRetry).setOnClickListener(this); mPagesColors = new int[]{ ContextCompat.getColor(this, android.R.color.darker_gray), ContextCompat.getColor(this, android.R.color.holo_green_dark), ContextCompat.getColor(this, android.R.color.holo_red_dark), ContextCompat.getColor(this, android.R.color.holo_blue_dark), ContextCompat.getColor(this, android.R.color.holo_purple), ContextCompat.getColor(this, android.R.color.holo_orange_dark), }; if (savedInstanceState == null) { replaceTutorialFragment(); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bRetry: replaceTutorialFragment(); break; } } public void replaceTutorialFragment() { final IndicatorOptions indicatorOptions = IndicatorOptions.newBuilder(this) .build(); final TutorialOptions tutorialOptions = TutorialFragment.newTutorialOptionsBuilder(this) .setUseAutoRemoveTutorialFragment(true) .setUseInfiniteScroll(true) .setPagesColors(mPagesColors) .setPagesCount(TOTAL_PAGES) .setIndicatorOptions(indicatorOptions) .setTutorialPageProvider(new TutorialPagesProvider()) .setOnSkipClickListener(new OnSkipClickListener(this)) .build(); final TutorialFragment tutorialFragment = TutorialFragment.newInstance(tutorialOptions); getFragmentManager() .beginTransaction() .replace(R.id.container, tutorialFragment) .commit(); } private static final class TutorialPagesProvider implements TutorialPageOptionsProvider { @NonNull @Override public PageOptions provide(int position) { @LayoutRes int pageLayoutResId; TransformItem[] tutorialItems; position %= ACTUAL_PAGES_COUNT; switch (position) { case 0: { pageLayoutResId = R.layout.fragment_page_first; tutorialItems = new TransformItem[]{ TransformItem.create(R.id.ivFirstImage, Direction.LEFT_TO_RIGHT, 0.20f), TransformItem.create(R.id.ivSecondImage, Direction.RIGHT_TO_LEFT, 0.06f), TransformItem.create(R.id.ivThirdImage, Direction.LEFT_TO_RIGHT, 0.08f), TransformItem.create(R.id.ivFourthImage, Direction.RIGHT_TO_LEFT, 0.1f), TransformItem.create(R.id.ivFifthImage, Direction.RIGHT_TO_LEFT, 0.03f), TransformItem.create(R.id.ivSixthImage, Direction.RIGHT_TO_LEFT, 0.09f), TransformItem.create(R.id.ivSeventhImage, Direction.RIGHT_TO_LEFT, 0.14f), TransformItem.create(R.id.ivEighthImage, Direction.RIGHT_TO_LEFT, 0.07f) }; break; } case 1: { pageLayoutResId = R.layout.fragment_page_third; tutorialItems = new TransformItem[]{ TransformItem.create(R.id.ivFirstImage, Direction.RIGHT_TO_LEFT, 0.20f), TransformItem.create(R.id.ivSecondImage, Direction.LEFT_TO_RIGHT, 0.06f), TransformItem.create(R.id.ivThirdImage, Direction.RIGHT_TO_LEFT, 0.08f), TransformItem.create(R.id.ivFourthImage, Direction.LEFT_TO_RIGHT, 0.1f), TransformItem.create(R.id.ivFifthImage, Direction.LEFT_TO_RIGHT, 0.03f), TransformItem.create(R.id.ivSixthImage, Direction.LEFT_TO_RIGHT, 0.09f), TransformItem.create(R.id.ivSeventhImage, Direction.LEFT_TO_RIGHT, 0.14f) }; break; } case 2: { pageLayoutResId = R.layout.fragment_page_second; tutorialItems = new TransformItem[]{ TransformItem.create(R.id.ivFirstImage, Direction.RIGHT_TO_LEFT, 0.2f), TransformItem.create(R.id.ivSecondImage, Direction.LEFT_TO_RIGHT, 0.06f), TransformItem.create(R.id.ivThirdImage, Direction.RIGHT_TO_LEFT, 0.08f), TransformItem.create(R.id.ivFourthImage, Direction.LEFT_TO_RIGHT, 0.1f), TransformItem.create(R.id.ivFifthImage, Direction.LEFT_TO_RIGHT, 0.03f), TransformItem.create(R.id.ivSixthImage, Direction.LEFT_TO_RIGHT, 0.09f), TransformItem.create(R.id.ivSeventhImage, Direction.LEFT_TO_RIGHT, 0.14f), TransformItem.create(R.id.ivEighthImage, Direction.LEFT_TO_RIGHT, 0.07f) }; break; } default: { throw new IllegalArgumentException("Unknown position: " + position); } } return PageOptions.create(pageLayoutResId, position, tutorialItems); } } private static final class OnSkipClickListener implements View.OnClickListener { @NonNull private final Context mContext; OnSkipClickListener(@NonNull Context context) { mContext = context.getApplicationContext(); } @Override public void onClick(View v) { Toast.makeText(mContext, "跳过按钮单击了", Toast.LENGTH_SHORT).show(); } }}
AndroidManifest.xml内容:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="siso.slidingt"> <application android:allowBackup="true" android:name=".SampleApplication" android:icon="@mipmap/s_0_1" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".support.MainActivity" android:label="@string/st_app_name"/> <activity android:name=".MainActivity" android:label="@string/st_app_name"/> <activity android:name=".selector.SelectorActivity" android:label="@string/st_app_name" android:theme="@style/AppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
build.gradle
apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "siso.slidingt" minSdkVersion 22 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5' compile project(path: ':stlib')}
项目结构如图:
依赖库项目结构如图:
库项目文件里的build.gradle
apply plugin: 'com.android.library'android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 22 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:percent:23.0.1'}
项目运行结果如图:
0 0
- 安卓Andriod使用入门(二十一)【视差效果引导页】
- 安卓Andriod使用入门(二十二)【漂亮酷炫的引导页】
- 安卓Andriod使用入门(十一)【下拉刷新】
- 安卓Andriod使用入门(四)【图片毛玻璃效果】
- 安卓Andriod使用入门(二)【高仿安卓微信6.0】
- 安卓Andriod使用入门(二十)【颜色对话框】
- 安卓Andriod使用入门(二十三)【百度地图API】
- 安卓Andriod使用入门(二十四)【爬取网络小说】
- 安卓Andriod使用入门(二十五)【爬新闻】
- 安卓Andriod使用入门(二十六)【记事本】
- 安卓Andriod使用入门(二十七)【点赞动画】
- 安卓Andriod使用入门(一)【圆形Menu菜单】
- 安卓Andriod使用入门(三)【2048游戏】
- 安卓Andriod使用入门(五)【分类侧滑菜单】
- 安卓Andriod使用入门(六)【动态GridView控件】
- 安卓Andriod使用入门(七)【Android日历控件】
- 安卓Andriod使用入门(八)【联动ListView】
- 安卓Andriod使用入门(九)【悬浮窗菜单】
- 好用的AndroidImageSlider图片自动轮播器
- 侧滑菜单样式android.support.v4.widget.DrawerLayout
- Linux用户态和内核态
- Halcon中gen_rectangle算子的异常处理方法
- Conscription poj 3723最大生成树
- 安卓Andriod使用入门(二十一)【视差效果引导页】
- Java-动态代理模式
- AJAX工作原理及其优缺点
- <C#>图片旋转任意角度自动保存程序(适合制作加载动画的图片资源)
- 优秀博客翻译-现代C++11代码风格
- awk里面执行shell/系统命令
- 内存泄漏简析
- retainAll()
- MappedByteBuffer