zoukankan      html  css  js  c++  java
  • 刨根解牛之Android欢迎页

    代码来自于https://www.cnblogs.com/yandashan666/p/10418911.html?tdsourcetag=s_pcqq_aiomsg

    package com.example.lenovo.tallybook;
    import android.content.Intent;
    import android.os.Handler;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private int recLen = 5;//跳过倒计时提示5秒
        private Button mBtn;
        Timer timer = new Timer();
        private Handler handler;
        private Runnable runnable;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             //flag使我们必须要设置的变量
            int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
            //设置当前窗体为全屏显示
            getWindow().setFlags(flag, flag);
            initView();
            timer.schedule(task, 1000, 1000);//等待时间一秒,停顿时间一秒
            /**
             * 正常情况下不点击跳过
             */
            handler = new Handler();
            handler.postDelayed(runnable = new Runnable() {
                @Override
                public void run() {
                    //跳转到首界面
                    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                    startActivity(intent);
                    finish();
                }
            }, 5000);//延迟5S后发送handler信息
    
        }
    
        private void initView() {
            mBtn = findViewById(R.id.btn_1);//跳过
            mBtn.setOnClickListener(this);//跳过监听
        }
    
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() { // UI thread
                    @Override
                    public void run() {
                        recLen--;
                        mBtn.setText("跳过 " + recLen);//在控件上显示距离跳转的剩余时间
                        if (recLen < 0) {
                            timer.cancel();
                            mBtn.setVisibility(View.GONE);//倒计时到0隐藏字体
                        }
                    }
                });
            }
        };
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_1:
                    //发生点击事件时直接跳转到首界面
                    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                    startActivity(intent);
                    finish();
                    if (runnable != null) {
                        handler.removeCallbacks(runnable);
                    }
                    break;
                default:
                    break;
            }
        }
    }
    

    代码的解读

    1.Timer类

    • java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。
    • 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。
    import java.util.Timer;
    Timer timer = new Timer(true);
    TimerTask task = new TimerTask() {
    public void run() {
    ... //每次需要执行的代码放到这里面。
     }
    };
    

    2.runOnUiThread

    runOnUiThread(new Runnable() { // UI thread
    
    • 利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。
    • Runnable对像就能在ui程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。

    3.getWindow.setFlags(设置当前窗体全屏)

    int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN; //设置当前窗体为全屏显示
    getWindow().setFlags(flag, flag);
    
    方法 解释
    getWindow() Activity 中的一个方法,获取当前的window
    setFlags(int flags,int mask) 根据标志设置窗口的WindowManager.LayoutParams标志。flags:新窗口的标志 mask:修改哪个窗口标志位。
  • 相关阅读:
    redis常见面试题
    nginx常见的面试题
    python学习笔记(15)pymysql数据库操作
    python中的if not
    python学习笔记(24)-类与对象
    python学习笔记(23)-异常处理
    python学习笔记(22)-os文件操作模块
    Maven---pom.xml配置详解
    maven+jmeter+jenkins集成
    适配器模式
  • 原文地址:https://www.cnblogs.com/smilerong/p/11636726.html
Copyright © 2011-2022 走看看