gr.png
新建一個基類,就是父類,每個Activity都繼承他,也可以不寫,主要是為了各自方法的調用
public abstract class Base extends AppCompatActivity {
private TextView mTitle;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
super.setContentView(R.layout.title);
setContentView(getLayoutId());
view();
data(); //數據
setListaner();
}
//全屏設置
protected void init() {
}
//設置監聽
protected void setListaner(){
}
//初始化數據,適配器
protected abstract void data();
//初始化視圖
protected abstract void view();
protected abstract int getLayoutId();
//啟動開始的ACtivity的界面
protected void openActivity(Class<? extends Base>cls, boolean isFinish){
startActivity(new Intent(this,cls));
if (isFinish)finish();
}
//T:泛值 ,將視圖與布局的ID結合起來
protected <T extends View>T getViewById(@IdRes int viewId){
return (T) findViewById(viewId);
}
}
新建個App類,用于承接上下文
public class App extends Application {
public static App appcontext;
@Override
public void onCreate() {
super.onCreate();
appcontext=this;
}
}
閃屏的界面,相當于主界面
public class ShanActivity extends Base {
private Timer timer;
private TextView mTVtimer;
private int time=6;
@Override //數據,主要是上面數字的變化
protected void data() {
//計時器
timer = new Timer(false);
timer.schedule(new TimerTask() {
@Override
public void run() {
//變化的text可寫為%1$s跳轉
//字time<string name="shan_tv_timer">%1$s跳轉</string>
//%1$ 代表一個可變化的字 中間的數字代表第幾位的的字變化
ShanActivity.this.runOnUiThread(new TimerTask() {
@Override
public void run() {
String timeStr=getString(R.string.shan_tv_timer);
//()中timeStr代表樣式,time是代表變化的數字,
timeStr= String.format(timeStr,--time);
mTVtimer.setText(timeStr);
if (time==0){
openActivity(HomeActivity.class,true);
timer.cancel();//取消定時任務
}
}
});
}
},0,1000);
}
@Override //視圖
protected void view() {
mTVtimer = getViewById(R.id.tv_shan_time);
}
@Override //關聯布局的
protected int getLayoutId() {
return R.layout.activity_shan;
}
@Override
protected void setListaner() {
//直接點擊跳轉
mTVtimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.cancel();
openActivity(HomeActivity.class,true);
}
});
}
}
閃屏界面的布局
1@A2PEV}GPAO{6@4RLXW{LX.png
<RelativeLayout 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/logo_1"
tools:context="com.bf.com.myapplication.Activity.ShanActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="安全衛士"
android:textSize="50dp"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/tv_shan_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/shan_tv_timer"
android:textSize="30dp"
android:background="#5ddded"
android:layout_alignParentRight="true"
android:layout_margin="10dp"/>
</RelativeLayout>