1.在开机动画界面添加秒数倒计时
2.懂了啥是可见状态和不可见状态 以及失去焦点和获得焦点
3.对Activity的生命周期有了进一步了解
❤️🧡💛💚💙💜🖤
开机动画界面添加倒计时
新添加的两个Text View
然后在SplashActivity .java文件中
放到if判断里面以后 就是下面这个样子
skipping的相关代码是下面这个样子的
为点击“取消”设置onClick事件
然后我在if判断后面又加了一个else
⭕有一个问题我也一直没弄明白 放在下面了 希望以后有机会弄明白 就是那个白色字体的部分 我也不清楚是哪里的逻辑出了点小问题
然后下面是老师的 我的和他的貌似一模一样的 但是我的开机界面就是会先保存五秒不动后在倒数 就像他多做了一个循环一样
❤️🧡💛💚💙💜🖤
然后就是关于选择手机 倒数的秒数会重新开始计数 (但是很莫名其妙的就是我的好像不添加修改也没有这个情况啊!!)
做作业的时候选择一种即可哦!!
方法一:
方法二:
----------------------------------------
关于可见状态与不可见状态的切换
具体操作如下
主要的注释什么的我都写在代码里面了
方便理解 应该看得懂?
个人理解 就是通过他的生命周期了解他的运行顺序或者逻辑 然后 想办法保持他“离开”和“回来”时候的界面 一样就好了
以此来实现 当有一个电话或者什么使当前运行的界面不可见时 能够保存当前的运行界面 当你接完电话再次回到此界面时 可以做到仍旧是你离开时的那个界面(你离开时候是4s 你回来了依旧是4s)反正大概意思就是这样 emmm/...好像那个失去焦点和创新得到焦点也是一样的原理 能够模仿这个写
❤️🧡💛💚💙💜🖤
最后 关于Activity的生命周期
----------------------------------------
我目前的代码主要的放一点在下面
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.smartfactory000">
<application
android:allowBackup="true"
android:icon="@mipmap/yun"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.SmartFactory000">
<activity
android:name=".MainActivity"
android:exported="true" />
<activity
android:name=".SplashActivity"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" /> //决定最先显示的程序界面
<category android:name="android.intent.category.LAUNCHER" />//决定应用程序是否显示在列表里面
</intent-filter>
</activity>
</application>
</manifest>
SplashActivity.java代码如下:
package com.example.smartfactory000;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;
public class SplashActivity extends AppCompatActivity {
Handler handler=new Handler ();//消息处理机制
private int seconds=5;
private boolean skipping=false;
private boolean running=true;
private boolean wasRunning; //变得不可见之前的状态
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
if(savedInstanceState!=null)
{
seconds=savedInstanceState.getInt ("seconds");
}
setContentView ( R.layout.activity_splash );
goToMain();
}
private void goToMain() {
TextView textView=(TextView)findViewById ( R.id.tv_seconds );
handler.postDelayed ( new Runnable () {
@Override
public void run() {
String time=String.format ("%d"+"s",seconds);
textView.setText (time);
if(seconds==0||skipping==true){
Intent intent =new Intent (SplashActivity.this,MainActivity.class);
startActivity (intent);
}else {
if(running) seconds--; //如果running为true则执行
handler.postDelayed (this,1000);//延时一秒之后再循环
}
}
}, 1000 );
}
public void onClickCancel(View view) {
skipping=true;
}
@SuppressLint("MissingSuperCall")
@Override
public void onSaveInstanceState(Bundle savedInstanceState){
savedInstanceState.putInt ("seconds",seconds);
}
@Override//重写onStart
public void onStart(){ //好比接完电话返回这个界面时
super.onStart ();
if(wasRunning) { //如果以前存在一个运行状态 则将其显示出来
running = true; //显示之前接电话之前”保存“的界面
}
}
@Override//重写onStop
public void onStop(){ //好比接了个电话 当前运行界面即将变得不可见
super.onStop ();
wasRunning=running;//变得不可见之前的状态=当前的运行状态
running=false;//当前状态=false
}
}
Main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/environment"
android:background="@color/pink"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textAlignment="center"
android:textSize="22sp"
android:textColor="@color/white"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
>
<TextView
android:id="@+id/tv_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/temperature_title"
android:textColor="@color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/tv_tem_values"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/temperature_values"
android:textSize="18sp"
android:layout_weight="1"
android:textColor="@color/red"
/>
<TextView
android:id="@+id/tv_humility"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/humility_title"
android:layout_weight="1"
android:textSize="18sp"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/tv_humility_values"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/humility_values"
android:textSize="18sp"
android:layout_weight="1"
android:textColor="@color/red"
/>
<TextView
android:id="@+id/tv_light"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="18sp"
android:text="@string/light_title"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/tv_light_values"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="18sp"
android:text="@string/light_values"
android:textColor="@color/red"
/>
</LinearLayout>
<TextView
android:id="@+id/tv_forbid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/pink"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="@string/forbid"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
>
<TextView
android:id="@+id/tv_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="18sp"
android:text="@string/normal"
android:textAlignment="center"
android:textColor="@color/red"
/>
</LinearLayout>
<TextView
android:id="@+id/tv_equipment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/pink"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="@string/equipment"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textSize="16sp"
android:textColor="@color/black"
android:text="@string/tongf" />
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:entries="@array/control_statue"
/>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_weight="1"
app:srcCompat="@mipmap/fan" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textSize="16sp"
android:textColor="@color/black"
android:text="@string/air_condition" />
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:entries="@array/control_statue"
/>
<ImageView
android:id="@+id/imageView2"
android:layout_width="106dp"
android:layout_height="23dp"
android:layout_weight="1"
app:srcCompat="@mipmap/air_conditioner" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textSize="16sp"
android:textColor="@color/black"
android:text="@string/air_condition" />
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:entries="@array/control_statue"
/>
<ImageView
android:id="@+id/imageView3"
android:layout_width="106dp"
android:layout_height="23dp"
android:layout_weight="1"
app:srcCompat="@mipmap/light" />
</LinearLayout>
</LinearLayout>