关于应用程序的开机启动界面
来源:互联网 发布:非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
- 关于应用程序的开机启动界面
- Android开发之开机启动没有界面的应用程序
- Android开发之开机启动没有界面的应用程序
- [电脑基础]关于WINXP开机启动时一直停留在“正在启动...”界面的处理
- 树莓派的开机启动自己的应用程序
- 关于CentOS的开机启动
- 定制android的开机启动界面
- Install Shiled 实现应用程序的开机启动
- Android应用程序的开机自启动
- android实现应用程序的开机自启动
- android 开机自动启动你的应用程序
- WINCE6.0 下的应用程序开机启动
- 应用程序开机自启动的C代码
- Android实现应用程序的开机自启动
- android实现应用程序的开机自启动
- Linux下的应用程序开机自启动
- Android应用程序开机开机启动
- 2015.02.08关于开机启动字符界面以及切换图形界面的方法
- Hadoop基本架构之HDFS和MapReduce(上)
- 素数有无穷多个的证明
- poj2240
- 同步通信和异步通信
- 多线程中更新UI万能方法
- 关于应用程序的开机启动界面
- JSTL中var和target 标签的用法
- 下拉刷新之 swipeRefreshLayout
- SSH反向代理实现外网访问内网服务器
- eclipse mars离线 配置hibernate 插件心得
- 【离散数学实验】相容关系的极大相容类的计算
- 如何快速掌握一门技术
- bzoj 1877: [SDOI2009]晨跑
- linux内存文件系统