关于应用程序的开机启动界面

来源:互联网 发布:非mac安装os x 编辑:程序博客网 时间:2024/05/17 09:04
平时我们在使用app的时候,会发现,大多数软件都有开机启动的效果,比较常见的有两种第一种: 就是界面从透明慢慢显示,这也是比较简单的一种。第二种: 就是界面上左右滑动的效果,到达最后一种的时候点击进入主界面,这是一种相对复杂的效果。下面,从第一种效果讲起创建activity_start.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/root_layout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ImageView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:src="@mipmap/ic_launcher" /></LinearLayout>
定义开机启动的类,StartActivity.java```

package com.example.glc.testtabfragments;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.LinearLayout;

/**
* Created by GLC on 2015/11/18.
*/
public class StartActivity extends Activity implements Animation.AnimationListener {
LinearLayout linearLayout;

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_start);    //定义透明度的显示动画,从0.3到1完全显示    AlphaAnimation alphaAnimation = new AlphaAnimation(0.3f, 1f);    alphaAnimation.setDuration(3000);    linearLayout = (LinearLayout) this.findViewById(R.id.root_layout);    //定义动画持续的时间为3000毫秒    alphaAnimation.setAnimationListener(this);    linearLayout.setAnimation(alphaAnimation);}

//以下三个方法都是监听动画的必须实现的方法
@Override
public void onAnimationStart(Animation animation) {

}@Overridepublic void onAnimationEnd(Animation animation) {    Intent intent = new Intent(StartActivity.this, GuidActivity.class);    startActivity(intent);    finish();}@Overridepublic void onAnimationRepeat(Animation animation) {}

}

        需要注意的是我们需要在Manifest.xml文件中设置StartActivity.java为启动项。    这样我们的第一种方式就已经实现好了,现在来继续实现第二种方式。    首先我们需要定义一个activity_guid.xml,用来显示引导页面,

这里写图片描述

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <LinearLayout        android:id="@+id/ll"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_marginBottom="15dp"        android:gravity="center"        android:orientation="horizontal">        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:padding="5dp"            android:src="@drawable/guide_point"            />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:padding="5dp"            android:src="@drawable/guide_point" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:padding="5dp"            android:src="@drawable/guide_point" />    </LinearLayout></RelativeLayout>

然后我们定义 第一个滑动页面

这里写图片描述

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#f6675f">    <ImageView        android:paddingTop="50dip"        android:paddingBottom="100dip"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:scaleType="centerInside"        android:src="@mipmap/gohome" /></RelativeLayout>
第二,三个页面类似,只是换了图片,这里不做过多介绍,主要的还是在java代码中实现。代码中,我们首先是定义了一个ViewPager控件,我们这里先初始化它,得到对象,然后设置Viewpager的适配器,这里我们需要继承PagerAdapter,
 private class MyPageAdapter extends PagerAdapter {        //获取当前窗体的界面数        @Override        public int getCount() {            return pagers.size();        }        //判断是否由对象生成界面        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        //将当前界面移除        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(pagers.get(position));        }        //选择界面加入窗体中        @Override        public Object instantiateItem(ViewGroup container, int position) {            container.addView(pagers.get(position));            return pagers.get(position);        }    }
我们需要初始化我们的三个界面
 pagers.add(getLayoutInflater().inflate(R.layout.guid_one, null));        pagers.add(getLayoutInflater().inflate(R.layout.guid_two, null));        View guidThree = getLayoutInflater().inflate(R.layout.guid_three, null);        pagers.add(guidThree);
最后我们将viewpager与设配器绑定起来,并且设置OnPageChangeListener,并且实现必要的方法。
 @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    @Override    public void onPageSelected(int position) {        setCurrentPoint(position);    }    @Override    public void onPageScrollStateChanged(int state) {    }

关于我们的Viewpager下面的三个小圆圈,我们需要设置选中的属性,guide_selector

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@mipmap/guide_point_seleced" android:state_enabled="true" />    <item android:drawable="@mipmap/guide_point" android:state_enabled="false" /></selector>

然后再代码中配置。

//这个方法用于初始化三个小圆圈,第一个为enabled状态,其他两个都为false状态    public void initPoint() {        ll = (LinearLayout) findViewById(R.id.ll);        points = new ImageView[pagers.size()];        for (int i = 0; i < points.length; i++) {            points[i] = (ImageView) ll.getChildAt(i);            points[i].setEnabled(false);        }        points[0].setEnabled(true);    }
//这个方法用于设置当前的小圆圈的状态,并且需要在onPageSelected方法中调用  public void setCurrentPoint(int position) {        for (int i = 0; i < points.length; i++) {            if (position == i) {                points[i].setEnabled(true);            } else {                points[i].setEnabled(false);            }        }

最后贴上完整的代码。

package com.example.glc.testtabfragments;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;/** * Created by GLC on 2015/11/18. */public class GuidActivity extends Activity implements View.OnClickListener, ViewPager.OnPageChangeListener {    private MyPageAdapter myPageAdapter;    private List<View> pagers = new ArrayList<>();    private ViewPager mViewPager;    private ImageView[] points;    private LinearLayout ll;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_guid);        init();        initPoint();    }    private void init() {        pagers.add(getLayoutInflater().inflate(R.layout.guid_one, null));        pagers.add(getLayoutInflater().inflate(R.layout.guid_two, null));        View guidThree = getLayoutInflater().inflate(R.layout.guid_three, null);        pagers.add(guidThree);        TextView tv_start = (TextView) guidThree.findViewById(R.id.start_app);        tv_start.setOnClickListener(this);        mViewPager = (ViewPager) findViewById(R.id.viewpager);        myPageAdapter = new MyPageAdapter();        mViewPager.setAdapter(myPageAdapter);        mViewPager.setOnPageChangeListener(this);    }    public void initPoint() {        ll = (LinearLayout) findViewById(R.id.ll);        points = new ImageView[pagers.size()];        for (int i = 0; i < points.length; i++) {            points[i] = (ImageView) ll.getChildAt(i);            points[i].setEnabled(false);        }        points[0].setEnabled(true);    }    public void setCurrentPoint(int position) {        for (int i = 0; i < points.length; i++) {            if (position == i) {                points[i].setEnabled(true);            } else {                points[i].setEnabled(false);            }        }    }    @Override    public void onClick(View view) {        Intent intent = new Intent(GuidActivity.this, MainActivity.class);        startActivity(intent);    }    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    @Override    public void onPageSelected(int position) {        setCurrentPoint(position);    }    @Override    public void onPageScrollStateChanged(int state) {    }    private class MyPageAdapter extends PagerAdapter {        @Override        public int getCount() {            return pagers.size();        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(pagers.get(position));        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            container.addView(pagers.get(position));            return pagers.get(position);        }    }}

这里我们的第二种启动app的方式也完成了。

0 0
原创粉丝点击