2.APP欢迎页面的设计(一)

实现效如下所示
在这里插入图片描述
实现这样的设计需要创建两个活动以及一个CountDownTimer类,分别命名WelcomeActivity和MainActivity。
具体程序设计如下:
WelcomeActivity.class

 package com.example.r.achat;
 
 import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.TextView;
 
 public class WelcomeActivity extends AppCompatActivity {
     private TextView tv;
     private Timer timer;
     public final static int CHANGE_ACTIVITY= 1;
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.welcome);//进行启动前的必要准备
         tv = (TextView) findViewById(R.id.time_welcome);//获取到“几秒跳过”的TextView的对象
          timer = new Timer(3000,1000,this,tv);//实例化Timer对象并传入时间参数,context以及TextView的对象
          timer.setHd(myhandler);
         timer.start();//启动定时器
         tv.setOnClickListener(new View.OnClickListener() {//对TextView进行监听
             @Override
             public void onClick(View view) {
                if(timer !=null&&timer.getStatus())
                timer.cancel();
                 gotoMainActivity();
             }
         });
     }
    

 private void gotoMainActivity() {//实现活动间的跳转

     Intent intent = new Intent(this,MainActivity.class);//只能在某个活动中实现这种跳转
    startActivity(intent);
     finish();

 }
 private final  Handler myhandler = new Handler(){
     @Override
     public void handleMessage(Message msg) {
         super.handleMessage(msg);

         switch (msg.what) {
             case CHANGE_ACTIVITY:
                 gotoMainActivity();

         }


     }
 };

}

MainActivity,class

    package com.example.r.achat;
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    }

Timer.class

    package com.example.r.achat;
    
    import android.content.Context;
    import android.content.Intent;
    import android.os.CountDownTimer;
    import android.os.Handler;
    import android.support.v4.content.ContextCompat;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TextView;
    
    import static android.support.v4.content.ContextCompat.startActivity;
    import static com.example.r.achat.WelcomeActivity.CHANGE_ACTIVITY;
    
    public class Timer extends CountDownTimer {//继承了CountDownTimer,重载onTick()和onFinish()

 

       private boolean runstatus = true;
        private TextView textView;
        private Handler hd;
        public Timer(long millisInFuture, long countDownInterval, Context context, View view) {
    
            super(millisInFuture, countDownInterval);
            LayoutInflater layoutInflater = LayoutInflater.from(context);
            layoutInflater.inflate(R.layout.welcome, null);
            textView = (TextView) view.findViewById(R.id.time_welcome);
    
        }
    
        @Override
        public void onTick(long l) {//每隔countDownInterval时间执行一次
    
            runstatus = true;
            textView.setText(l / 1000 + "s跳过");
    
        }
    
        @Override
        public void onFinish() {//millisInFuture时间后执行(定时完成)
            runstatus = false;
            textView.setText("跳过");
            hd.obtainMessage(CHANGE_ACTIVITY).sendToTarget();//向主消息站发送一个消息,等待后续的处理
        }
    
    
        public boolean getStatus() {
    
            return runstatus;
    
        }
    
    
        public void setHd(Handler hd) {
    
    //传递Handler
            this.hd = hd;
        }
    }

welcome.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/huaer"
        android:orientation="vertical"
        android:id="@+id/layout_welcome"
        >
    
        <TextView
            android:id="@+id/time_welcome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3s跳过"
            android:layout_gravity="right|top"
            android:layout_margin="13dp"
            android:background="@drawable/shape"
            android:gravity="center"
    
    
             />
    
    
    </LinearLayout>

对于“几秒跳过”这一TextView的椭圆形的背景可以用下面的方法来实现
新建一个叫shape的xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
        <corners android:radius="20dp"/>
        <solid android:color="#9c9797"/>
        <size android:width="50dp"/>
        <size android:height="20dp"/>
        </shape>

android:shape=“oval” 是定义的椭圆
corners android:radius=“20dp"定义的是四个角的圆角半径(圆角半径也可以分别定义)
solid android:color=”#9c9797"定义背景颜色
size android:width=“50dp”
size android:height="20dp"定义长度和宽度

总结:
这个例子有以下几个重要知识:

1.CountDownTimer计时器的运用
2.使用INTENT进行活动间的切换
3.消息的发送和处理
4.各种形状的背景的设计

猜你喜欢

转载自blog.csdn.net/RCY159/article/details/82877934