免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2372 | 回复: 1
打印 上一主题 下一主题

[Android] 【转】Android之应用首次使用的欢迎界面实例 [复制链接]

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-21 13:48 |只看该作者 |倒序浏览
主要代码
  1. package com.chinaideal.bkclient.tabmain;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. import android.app.Activity;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.SharedPreferences;
  8. import android.content.SharedPreferences.Editor;
  9. import android.os.Bundle;
  10. import android.os.Handler;
  11. import android.os.Message;
  12. import android.support.v4.view.ViewPager;
  13. import android.support.v4.view.ViewPager.OnPageChangeListener;
  14. import android.view.View;
  15. import android.view.ViewGroup;
  16. import android.view.ViewTreeObserver.OnPreDrawListener;
  17. import android.view.animation.TranslateAnimation;
  18. import android.widget.ImageView;
  19. import android.widget.ImageView.ScaleType;

  20. public class WelComeActivity extends Activity {

  21.         // 首次使用程序的显示的欢迎图片
  22.         private int[] ids = { R.drawable.webcom_frist_image,
  23.                         R.drawable.webcom_two_image, R.drawable.webcom_three_image,
  24.                         R.drawable.niwodai_welcom };

  25.         SharedPreferences share;
  26.         private List<View> guides = new ArrayList<View>();
  27.         private ViewPager pager;
  28.         private ImageView curDot;
  29.         // 位移量
  30.         private int offset;
  31.         // 记录当前的位置
  32.         private int curPos = 0;

  33.         Editor editor;

  34.         @Override
  35.         public void onCreate(Bundle savedInstanceState) {
  36.                 super.onCreate(savedInstanceState);
  37.                 share = getSharedPreferences("showWelcomm", Context.MODE_PRIVATE);
  38.                 editor = share.edit();
  39.                 // 判断是否首次登录程序
  40.                 if (share.contains("shownum")) {
  41.                         setContentView(R.layout.welcomniwo);
  42.                         int num = share.getInt("shownum", 0);
  43.                         editor.putInt("shownum", num++);
  44.                         editor.commit();
  45.                         skipActivity(1);
  46.                 } else {
  47.                         editor.putInt("shownum", 1);
  48.                         editor.commit();
  49.                         setContentView(R.layout.welcometabx);
  50.                         initView();
  51.                 }

  52.         }

  53.         private void initView() {
  54.                 for (int i = 0; i < ids.length; i++) {
  55.                         ImageView iv = new ImageView(this);
  56.                         iv.setImageResource(ids[i]);
  57.                         ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
  58.                                         ViewGroup.LayoutParams.MATCH_PARENT,
  59.                                         ViewGroup.LayoutParams.MATCH_PARENT);
  60.                         iv.setLayoutParams(params);
  61.                         iv.setScaleType(ScaleType.FIT_XY);
  62.                         guides.add(iv);
  63.                 }
  64.                 curDot = (ImageView) findViewById(R.id.cur_dot);
  65.                 curDot.getViewTreeObserver().addOnPreDrawListener(
  66.                                 new OnPreDrawListener() {
  67.                                         public boolean onPreDraw() {
  68.                                                 offset = curDot.getWidth();
  69.                                                 return true;
  70.                                         }
  71.                                 });

  72.                 WecommPagerAdapter adapter = new WecommPagerAdapter(guides);
  73.                 pager = (ViewPager) findViewById(R.id.showwelom_page);
  74.                 pager.setAdapter(adapter);
  75.                 pager.setOnPageChangeListener(new OnPageChangeListener() {
  76.                         public void onPageSelected(int arg0) {
  77.                                 moveCursorTo(arg0);
  78.                                 if (arg0 == ids.length - 1) {// 到最后一张了
  79.                                         skipActivity(2);
  80.                                 }
  81.                                 curPos = arg0;
  82.                         }

  83.                         public void onPageScrolled(int arg0, float arg1, int arg2) {
  84.                         }

  85.                         public void onPageScrollStateChanged(int arg0) {
  86.                         }

  87.                 });

  88.         }

  89.         /**
  90.          * 移动指针到相邻的位置
  91.          *
  92.          * @param position
  93.          *            指针的索引值
  94.          * */
  95.         private void moveCursorTo(int position) {
  96.                 TranslateAnimation anim = new TranslateAnimation(offset * curPos,
  97.                                 offset * position, 0, 0);
  98.                 anim.setDuration(300);
  99.                 anim.setFillAfter(true);
  100.                 curDot.startAnimation(anim);
  101.         }


  102.         /**
  103.          * 延迟多少秒进入主界面
  104.          * @param min 秒
  105.          */
  106.         private void skipActivity(int min) {
  107.                 new Handler().postDelayed(new Runnable() {

  108.                         @Override
  109.                         public void run() {
  110.                                 Intent intent = new Intent(WelComeActivity.this,
  111.                                                 TabHostMain.class);
  112.                                 startActivity(intent);
  113.                                 WelComeActivity.this.finish();
  114.                         }
  115.                 }, 1000*min);
  116.         }

  117. }
复制代码
  1. public class WecommPagerAdapter extends PagerAdapter{

  2.         private List<View> views;
  3.        
  4.         public GuidePagerAdapter(List<View> views){
  5.                 this.views=views;
  6.         }
  7.        
  8.         @Override
  9.         public void destroyItem(View arg0, int arg1, Object arg2) {
  10.                 ((ViewPager) arg0).removeView(views.get(arg1));
  11.         }

  12.         @Override
  13.         public void finishUpdate(View arg0) {
  14.         }

  15.         @Override
  16.         public int getCount() {
  17.                 return views.size();
  18.         }

  19.         @Override
  20.         public Object instantiateItem(View arg0, int arg1) {
  21.                 ((ViewPager) arg0).addView(views.get(arg1), 0);
  22.                 return views.get(arg1);
  23.         }

  24.         @Override
  25.         public boolean isViewFromObject(View arg0, Object arg1) {
  26.                 return arg0 == (arg1);
  27.         }

  28.         @Override
  29.         public void restoreState(Parcelable arg0, ClassLoader arg1) {
  30.                
  31.         }

  32.         @Override
  33.         public Parcelable saveState() {
  34.                 return null;
  35.         }

  36.         @Override
  37.         public void startUpdate(View arg0) {
  38.                
  39.         }

  40. }
复制代码
布局文件
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical" >
  6.     <android.support.v4.view.ViewPager
  7.         android:id="@+id/showwelom_page"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="fill_parent"
  10.         android:layout_gravity="center"
  11.         android:flipInterval="30"
  12.         android:persistentDrawingCache="animation" />

  13.     <FrameLayout
  14.         android:layout_width="wrap_content"
  15.         android:layout_height="wrap_content"
  16.         android:layout_alignParentBottom="true"
  17.         android:layout_centerHorizontal="true"
  18.         android:gravity="center"
  19.         android:paddingBottom="22.0dip">

  20.         <LinearLayout
  21.             android:layout_width="wrap_content"
  22.             android:layout_height="wrap_content"
  23.             android:gravity="center"
  24.             android:orientation="horizontal" >

  25.             <ImageView
  26.                 android:layout_width="wrap_content"
  27.                 android:layout_height="wrap_content"
  28.                 android:layout_weight="1.0"
  29.                 android:src="@drawable/dot1_w" />

  30.             <ImageView
  31.                 android:layout_width="wrap_content"
  32.                 android:layout_height="wrap_content"
  33.                 android:layout_weight="1.0"
  34.                 android:src="@drawable/dot1_w" />

  35.             <ImageView
  36.                 android:layout_width="wrap_content"
  37.                 android:layout_height="wrap_content"
  38.                 android:layout_weight="1.0"
  39.                 android:src="@drawable/dot1_w" />

  40.             <ImageView
  41.                 android:layout_width="wrap_content"
  42.                 android:layout_height="wrap_content"
  43.                 android:layout_weight="1.0"
  44.                 android:src="@drawable/dot1_w" />


  45.         </LinearLayout>

  46.         <ImageView
  47.             android:id="@+id/cur_dot"
  48.             android:layout_width="wrap_content"
  49.             android:layout_height="wrap_content"
  50.             android:src="@drawable/dot2_w" />
  51.     </FrameLayout>


  52. </RelativeLayout>
复制代码

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
2 [报告]
发表于 2015-09-21 13:52 |只看该作者
也可以自己定义 fragment
例如

主要代码片段
  1. private void initView() {
  2.                 boolean isShow = false;
  3.         for (int i = 0; i < ids.length; i++) {
  4.                 if (i == ids.length - 1) {
  5.                                 isShow = true;
  6.                         }else {
  7.                                 isShow = false;
  8.                         }
  9.                 GuideFragment guideFragment = new GuideFragment(ids[i],isShow);
  10.             guides.add(guideFragment);  
  11.         }
  12.         viewPager = (ViewPager) findViewById(R.id.pagerGuide);
  13.         viewPager.setAdapter(new WelcomePagerAdapter(getSupportFragmentManager(),guides));
  14.     }
复制代码
GuideFragment 类代码片段
  1. public class GuideFragment extends Fragment {
  2.        
  3. //        private static final String TAG = "GuideFragment";
  4.         private Button startBtn;
  5.         private int guideId;
  6.         private boolean isShow;
  7.        
  8.         public GuideFragment(int guideId,boolean isShow){
  9.                  this.guideId = guideId;
  10.                  this.isShow = isShow;
  11.         }
  12.        
  13.         @Override
  14.         public void onCreate(Bundle savedInstanceState) {
  15.                 super.onCreate(savedInstanceState);
  16.         }
  17.        
  18.         @Override
  19.         public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
  20.                 View guideView = (View) inflater.inflate(R.layout.fragment_guide, container, false);
  21.                 startBtn = (Button) guideView.findViewById(R.id.start_btn);
  22.                 final ImageView guideImage = (ImageView)guideView.findViewById(R.id.image_guide);
  23.                 guideImage.setImageResource(guideId);
  24.                 guideImage.setBackgroundColor(Color.parseColor("#f4f8fb"));
  25.                 if (isShow) {
  26.                         startBtn.setVisibility(View.VISIBLE);
  27.                         startBtn.setOnClickListener(new View.OnClickListener() {
  28.                                 @Override
  29.                                 public void onClick(View v) {
  30.                                         CommonUtil.saveSharedPrefrences(AppConst.SAVE_WELCOME, 1 + "");
  31.                                         guideImage.setImageResource(R.drawable.splash_default);
  32.                                         guideImage.setBackgroundColor(Color.parseColor("#fbf9ef"));
  33.                                        
  34.                                         //最好一页点击的时候打开主activity界面
  35.                                 }
  36.                         });
  37.                 }else {
  38.                         startBtn.setVisibility(View.GONE);
  39.                 }
  40.                 return guideView;
  41.         }
复制代码
fragment_guide
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:gravity="center" >

  6.     <ImageView
  7.         android:id="@+id/image_guide"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="fill_parent"
  10.         android:layout_centerInParent="true"
  11.         android:background="@drawable/splash_default"
  12.         android:contentDescription="@null"
  13.         android:scaleType="centerInside" />

  14.     <Button
  15.         android:id="@+id/start_btn"
  16.         style="@style/Button.Orange"
  17.         android:layout_width="fill_parent"
  18.         android:layout_height="200dip"
  19.         android:layout_alignParentBottom="true"
  20.         android:layout_centerHorizontal="true"
  21.         android:layout_marginBottom="5dip"
  22.         android:layout_marginLeft="40dip"
  23.         android:layout_marginRight="40dip"
  24.         android:background="#00ffffff" />

  25. </RelativeLayout>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP