Android设置软件启动动画(以及初次安装的几张引导图)
设置软件启动动画
1 创建一个启动Activity 这里叫做QiDongActivity
它的XML中设置一个matchparent的背景图
2 在Manifest.xml文件中:
3 在java文件中 设置延时
private final int DISPLAY_LENGHT = 1000; //延迟1秒
//用子线程做延时操作再跳转到你要的主界面
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(QiDongActivity.this,LoginActivity.class);
QiDongActivity.this.startActivity(mainIntent);
QiDongActivity.this.finish();
}
},DISPLAY_LENGHT);//延时1秒
设置初次下载时的软件使用提示
在启动Activity中,setContentView之前,通过SharedPreference来进行
public class QiDongActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 先判断是否为第一次安装启动软件
SharedPreferences firstShared = getSharedPreferences(“isFristDownLoad”, MODE_PRIVATE);
boolean isFirst = firstShared.getBoolean(“isFristDownLoad”, true); // 当不存在 即首启动时 则设置为true
SharedPreferences.Editor editor = firstShared.edit();
if (isFirst) {
Intent intent = new Intent(QiDongActivity.this, GuideActivity.class);
startActivity(intent);
finish();
editor.putBoolean(“isFristDownLoad”, false);
editor.apply();
} else {
setContentView(R.layout.activity_qi_dong);
StatusBarUtil.setTransparent(QiDongActivity.this);
//申请权限
getPhoneState();
}
}
启动界面:
public class GuideActivity extends AppCompatActivity{
// 引导页图片资源
private static final int[] pics = { R.layout.guide_pic1, R.layout.guide_pic2};
private ImageView imageView0,imageView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StatusBarUtil.setTransparent(GuideActivity.this);
setContentView(R.layout.activity_guide);
ViewPager viewPager = findViewById(R.id.view_pager);
imageView0 = findViewById(R.id.imageview0);
imageView1 = findViewById(R.id.imageview1);
imageView0.setImageResource(R.drawable.guide_white_circle);
imageView1.setImageResource(R.drawable.guide_transparent_circle);
List views = new ArrayList();
// 初始化引导页视图列表
for (int i = 0; i
View view = LayoutInflater.from(this).inflate(pics[i], null);
if (i == pics.length – 1) {
Button startBtn = view.findViewById(R.id.btn_enter);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(GuideActivity.this, QiDongActivity.class);
startActivity(intent);
}
});
}
views.add(view);
}
GuideViewPagerAdapter adapter = new GuideViewPagerAdapter(views);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new PageChangeListener());
}
private class PageChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int position) {
}
@Override
public void onPageScrolled(int position, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
if(position == 0){
imageView0.setImageResource(R.drawable.guide_white_circle);
imageView1.setImageResource(R.drawable.guide_transparent_circle);
}else {
imageView1.setImageResource(R.drawable.guide_white_circle);
imageView0.setImageResource(R.drawable.guide_transparent_circle);
}
}
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
GuideAdapter
public class GuideViewPagerAdapter extends PagerAdapter {
private List mListViews;
public GuideViewPagerAdapter(List mListViews) {
this.mListViews = mListViews;
}
//直接继承PagerAdapter,至少必须重写下面的四个方法,否则会 错
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mListViews.get(position));//删除页卡
}
@Override
public Object instantiateItem(ViewGroup container, int position){
//这个方法用来实例化页卡
container.addView(mListViews.get(position), 0);//添加页卡
return mListViews.get(position);
}
@Override
public int getCount() {
return mListViews.size();//返回页卡的数量
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;//官方提示这样写
}
}
activity_guide.xml
android:layout_width=”match_parent”
android:layout_height=”match_parent”
/>
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:orientation=”horizontal”
android:layout_alignParentBottom=”true”
android:layout_marginBottom=”5dp”
android:layout_centerHorizontal=”true”
>
android:layout_width=”10dp”
android:layout_height=”10dp”
/>
android:layout_width=”10dp”
android:layout_height=”10dp”
android:layout_marginLeft=”2dp”
android:layout_marginStart=”2dp” />
选中的点和未选中的点样式:
android:topRightRadius=”5dp”
android:bottomRightRadius=”5dp”
android:bottomLeftRadius=”5dp”/>
android:topRightRadius=”5dp”
android:bottomRightRadius=”5dp”
android:bottomLeftRadius=”5dp”/>
guide_pic1 和 guide_pic2
android:layout_width=”match_parent” android_layout_height=”match_parent”>
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:src=”@mipmap/guide_01″
android:scaleType=”fitXY”
/>
问题:
一、明明设置了高度和宽度都matchparent 但是还是不能覆盖全屏
解决:
1 可能是你的图片本身大小不够 所以即使控件matchparent 但是 图片却只有这么大 所以改图片大小
2 图片够大,还是不能覆盖。将 ImageView加一个属性
android:scaleType=”fitXY”
就可以了
相关资源:qq冻结查询软件番薯QQ冻结查询器v2.0-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!