仿微信启动界面

来源:互联网 发布:麒麟linux操作系统下载 编辑:程序博客网 时间:2024/06/05 07:47

一、效果图

开始界面:

引导界面:


二、实现

首先判断是否是第一次启动,是第一次启动启动引导界面,不是直接进入登录界面

SharedPreferences preferences = getSharedPreferences(                 SHAREDPREFERENCES_NAME, MODE_PRIVATE); isFirstIn = preferences.getBoolean("isFirstIn", true); private void GoLogon() {       Intent intent = new Intent(BeginActivity.this, LogonActivity.class);       startActivity(intent);       BeginActivity.this.finish();  }   private void GoGuide() {      Intent intent = new Intent(BeginActivity.this, GuideActivity.class);      startActivity(intent);       BeginActivity.this.finish();  }  


引导界面使用了ViewPager去实现,使用方法跟ListView类似,需提供一个PagerAdapter适配器,实现比较简单,重载几个方法就可以了

public class ViewPagerAdapter extends PagerAdapter {private List<View> views;     public ViewPagerAdapter(List<View> views, Activity activity) {       this.views = views;  }     @Override  public void destroyItem(View arg0, int arg1, Object arg2) {         ((ViewPager) arg0).removeView(views.get(arg1));  }  @Overridepublic int getCount() {  // TODO Auto-generated method stub  if (views != null) {       return views.size();    }    return 0; }@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {  // TODO Auto-generated method stub  return (arg0 == arg1);  }@Overridepublic Object instantiateItem(View container, int position) {  ((ViewPager) container).addView(views.get(position));  return views.get(position);}


下面是使用

 private void initViews() {          LayoutInflater inflater = LayoutInflater.from(this);            views = new ArrayList<View>();          // 初始化引导图片列表          views.add(inflater.inflate(R.layout.guidepage01, null));          views.add(inflater.inflate(R.layout.guidepage02, null));          views.add(inflater.inflate(R.layout.guidepage03, null));          views.add(inflater.inflate(R.layout.guidepage04, null));         views.add(inflater.inflate(R.layout.guidepage05, null));         views.add(inflater.inflate(R.layout.guidepage06, null));           // 初始化Adapter          vpAdapter = new ViewPagerAdapter(views, this);                    vp = (ViewPager) findViewById(R.id.guidePagers);          vp.setAdapter(vpAdapter);          // 绑定回调          vp.setOnPageChangeListener(new NavigationPageChangeListener());    }  

白色小圆点是使用图片的方式实现的

private void initDots() {      imageViews = new ImageView[views.size()];    viewPoints = (ViewGroup)findViewById(R.id.viewPoints);    for (int i = 0; i < views.size(); i++) {imageView = new ImageView(GuideActivity.this);imageView.setLayoutParams(new LayoutParams(20, 20));imageView.setPadding(5, 0, 5, 0);imageViews[i] = imageView;if (i == 0)imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));else       imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));viewPoints.addView(imageViews[i]);    }}  

界面滑动时更新白色圆点

class NavigationPageChangeListener implements OnPageChangeListener {@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int position) {for (int i = 0; i < imageViews.length; i++) {imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_focused));if (position != i)imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_indicator_unfocused));}}}


关键代码就这些,源码地址:http://download.csdn.net/detail/m370809968/6389011

原创粉丝点击