《笑话大全》APP代码详解1

《笑话大全》是本人的第一个完整项目APP,目前已在腾讯应用宝上线,有兴趣的朋友可以去下载下来研究研究,有什么意见和建议都可以告诉我。说是完整项目,距离真正的商业项目还是差了很远的,比如界面不美观,网络加载的BUG等都是一些问题,鉴于本人技术原因,暂时还不能改善这些小问题。不过这都不是这篇博客的重点,我要将这个项目的所有代码都写在博客上,便于回顾,也正好再完整的梳理一遍,加强记忆。

任何APP,尤其是国内的APP都会有一个东西,那就是启动页面,也有叫闪屏页的,都是一个意思。虽然Google并不建议做这个玩意儿出来,但大环境如此,我也不能幸免。首先看一下启动页面的截图吧!


很普通的一个启动界面,看完了截图,下面是他的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/splash_layout"
    android:background="@drawable/splash_back">
    <ImageView
        android:id="@+id/jokes_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_logo"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp" />
    <TextView
        android:layout_below="@id/jokes_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#395c9d"
        android:layout_marginTop="15dp"
        android:textSize="50sp"
        android:text="笑话大全"
        android:layout_centerHorizontal="true"
        android:id="@+id/textView" />

</RelativeLayout>
布局文件中可以看到,我不是将整个图片作为RelativeLayout的背景传入,这会涉及到屏幕适配问题导致的变形压缩。所以我只是将纯色图片作为背景传入,中间"Jokes"字样的圆形图片和下面的文字单独进行设置,这样虽然还是会有屏幕适配问题,但最起码中间的内容不会再变形,也算是相对而言一种较为巧妙的处理方式。
布局文件过后就是JAVA文件了。

启动页过后,我还做了引导页面,所以当启动页结束后要进行判断,如果用户是第一次使用的话,就跳转到引导页,如果不是的话就直接进入应用。

接下来是JAVA代码:

public class SplashActivity extends Activity {
    private static final String APP_ID="";
    private static final String APP_SECRET="";
    private RelativeLayout splashLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        
        //初始化广告
        AdManager.getInstance(this).
                init(APP_ID, APP_SECRET,false);
        //实例化布局
        splashLayout=(RelativeLayout)findViewById(R.id.splash_layout);
        initAnimation();//执行初始化动画方法。
    }
    //初始化动画效果。
    private void initAnimation(){
        Animation animation= AnimationUtils.loadAnimation(SplashActivity.this,R.anim.alpha_scale);
        animation.setFillAfter(true);
        //给布局添加动画效果,也就是给启动页添加动画效果
        splashLayout.startAnimation(animation);
        //给动画设置监听器,当动画展示完毕后就进行判断。
        animation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                //利用SharedPreferencesUtils工具类的静态函数获取是否是第一进入APP,如果为true,就跳转到新手页面。反之跳转到主页面。
                Boolean isFirstEnter= SharedPreferencesUtils.getBoolean(SplashActivity.this,"is_first_enter",true);
                Intent intent;
                if (isFirstEnter){
                    intent=new Intent(SplashActivity.this,GuideActivity.class);
                }else {
                    intent=new Intent(SplashActivity.this,MainActivity.class);
                }
                startActivity(intent);
                finish();//关闭当前页面
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
    }
}
上面的代码非常简单,将布局文件实例化(用词不是很严谨,希望知道的同学能告诉我怎么表述最合适),给其添加动画效果,设置展示的特效,再设置监听器,在展示结束后的回调函数中进行判断,如果是第一次进入,就跳转到引导页,反之就跳到主页面。这里涉及到一个类,他是SharedPreferencesUtils,这是自定义的工具类,代码如下:

public class SharedPreferencesUtils {

    public static Boolean getBoolean(Context context,String key,Boolean value){
        SharedPreferences sharedPreferences=context.getSharedPreferences("config",Context.MODE_PRIVATE);
        return sharedPreferences.getBoolean(key,value);
    }
    public static void setBoolean(Context context,String key,Boolean value){
        SharedPreferences sharedPreferences=context.getSharedPreferences("config",Context.MODE_PRIVATE);
        sharedPreferences.edit().putBoolean(key,value).commit();
    }
}
当然还有动画效果的布局文件,这个更简单,就不贴出来了。

以上就是启动页的代码逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值