小项目开发——Timer + TimerTask 实现数字时钟

5 篇文章 0 订阅
订阅专栏

目录

文章目录

  • 目录
  • 小项目开发——Timer + TimerTask 实现数字时钟
    • 1. 题目
    • 2. 结构分析
    • 3. 模块思维导图
    • 4. Layout
      • ⑴ 视图
      • ⑵ 导航栏 LOGO
      • ⑶ Android 七段数码管字体
      • ⑷ 代码
    • 5. Activity
      • ⑴ 私有成员变量
      • ⑵ 自定义初始化函数
      • ⑶ 导航栏模块
      • ⑷ 背景模块
      • ⑸ 时钟模块
      • ⑹ onCreate
    • 6. 最终效果

小项目开发——Timer + TimerTask 实现数字时钟

1. 题目

Timer+TimerTask实现数字时钟.

◼ 期望最终效果:


2. 结构分析

◼ 主要分为 3 个大模块:导航栏背景时钟.

◼ 当然,与这 3 大模块相关的小模块也有许多.


3. 模块思维导图

在这里插入图片描述


4. Layout

◼ Android 开发首先应设计好页面布局(activity_my_digital_clock.xml).

◼ 布局idcl_wzy_digitalclock.

⑴ 视图

◼ 主要是 时钟模块 的6个TextView

⑵ 导航栏 LOGO

◼ 在这个网站上寻找到了时钟 LOGO 资源: Search results for Clock - Flaticon.

◼ 并将图片资源 icon_clock.png 导入到了 res/drawable 中.

◼ 同时编写了相应的 clock.xml 文件,将其修改为白色以适配导航栏的背景色.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/icon_clock" android:tint="@color/white" />
    </item>
</layer-list>

在这里插入图片描述

⑶ Android 七段数码管字体

◼ 在这个网站上寻找到了字体资源: DS-Digital Font | dafont.com.

◼ 并将字体资源 ds_digi.TTF 导入到了 res/font 文件夹中.

◼ 然后在 xml 文件的组件中以如下方式使用该字体.

android:fontFamily="@font/ds_digi"

在这里插入图片描述

⑷ 代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/cl_wzy_digitalclock"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MyDigitalClockActivity">

    <TextView
        android:id="@+id/tv_time_hmin"
        android:layout_width="296dp"
        android:layout_height="131dp"
        android:fontFamily="@font/ds_digi"
        android:gravity="center"
        android:text="00:00"
        android:textSize="130sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.139"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.305" />

    <TextView
        android:id="@+id/tv_week"
        android:layout_width="50dp"
        android:layout_height="36dp"
        android:layout_marginTop="4dp"
        android:text="Week"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.243"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_time_hmin"
        app:layout_constraintVertical_bias="0.007" />

    <TextView
        android:id="@+id/tv_AMorPM"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="13dp"
        android:text="AM"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toEndOf="@+id/tv_time_hmin"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.3" />

    <TextView
        android:id="@+id/tv_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="xxxx/xx/xx"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.566"
        app:layout_constraintStart_toEndOf="@+id/tv_week"
        app:layout_constraintTop_toBottomOf="@+id/tv_time_hmin"
        app:layout_constraintVertical_bias="0.017" />

    <TextView
        android:id="@+id/tv_time_second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="@font/ds_digi"
        android:text="00"
        android:textSize="48sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.13"
        app:layout_constraintStart_toEndOf="@+id/tv_time_hmin"
        app:layout_constraintTop_toBottomOf="@+id/tv_AMorPM"
        app:layout_constraintVertical_bias="0.018" />

    <TextView
        android:id="@+id/tv_timezone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="92dp"
        android:text="北京时间"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/tv_time_hmin"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

</androidx.constraintlayout.widget.ConstraintLayout>

5. Activity

◼ 文件名:MyDigitalClockActivity.java

⑴ 私有成员变量

private ConstraintLayout clClock; // 布局
private TextView mTimezoneTv; // 时区名
private TextView mHminTv, mSecondTv; // 时间文本
private TextView mAMorPMTv; // 上下午文本
private TextView mWeekTv; // 周数文本
private TextView mDataTv; // 日期文本
private Timer mTimer; // Timer 对象
private TimeZone mTimeZone; // 设置时区
private Calendar mCalendar; // 日历类对象
private ActionBar actionBar; // ActionBar 对象

⑵ 自定义初始化函数

◼ API

/*
 * 对只用初始化一次的类成员初始化
 */
public void init() {
    clClock = (ConstraintLayout) findViewById(R.id.cl_wzy_digitalclock);
    mTimezoneTv = (TextView) findViewById(R.id.tv_timezone);
    mHminTv = (TextView) findViewById(R.id.tv_time_hmin);
    mSecondTv = (TextView) findViewById(R.id.tv_time_second);
    mAMorPMTv = (TextView) findViewById(R.id.tv_AMorPM);
    mWeekTv = (TextView) findViewById(R.id.tv_week);
    mDataTv = (TextView) findViewById(R.id.tv_data);
    mTimer = new Timer();
    mTimeZone = TimeZone.getTimeZone("GMT+8:00"); // 北京时间
    actionBar = getSupportActionBar(); // 获取 ActionBar
} // end init

⑶ 导航栏模块

◼ API

/*
 * 自定义导航栏样式
 */
public void setActionBar() {
    actionBar.setTitle("  MyDigitalClock——WZY"); // 设置标题
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setLogo(R.drawable.clock); // 设置 LOGO
    actionBar.setDisplayUseLogoEnabled(true);
} // end setActionBar

注:改了一下原题目预期实现效果的导航栏效果.

⑷ 背景模块

◼ 在 白天 时:背景颜色白色,所有 字体颜色黑色

◼ 在 夜晚 时,背景颜色黑色,所有 字体颜色白色.

注:这是我自己加的一个小功能(详见6. 最终效果).

◼ API

API说明
setAllTextViewColor一次性修改所有TextView的字体颜色
changeLayoutColor根据当前小时数改变背景颜色和字体颜色
/*
 * 一次性修改所有 TextView 的字体颜色
 *
 * @Param color 字体颜色
 */
public void setAllTextViewColor(int color) {
    // 将所有的 TextView 保存在数组中
    TextView[] textViews = new TextView[]{mTimezoneTv, mHminTv, mSecondTv, mAMorPMTv, mWeekTv, mDataTv};
    /* 循环遍历数组,依次设置字体颜色 */
    for (TextView textView : textViews) {
        textView.setTextColor(color);
    }
} // end setAllTextViewColor

/*
 * 根据当前小时数改变背景颜色和字体颜色
 *
 * @Param hour 当前小时数
 */
public void changeLayoutColor(int hour) {
    if (hour >= 6 && hour < 18) {
        /* 如果是白天,设置背景颜色为白色,字体颜色为黑色 */
        clClock.setBackgroundColor(Color.WHITE);
        setAllTextViewColor(Color.BLACK);
    } else {
        /* 如果是夜晚,设置背景颜色为黑色,字体颜色为白色 */
        clClock.setBackgroundColor(Color.BLACK);
        setAllTextViewColor(Color.WHITE);
    }
} // end changeLayoutColor

⑸ 时钟模块

◼ API

API说明
getCurrentHminTime获取当前时间的小时和分钟数
getCurrentSecondTime获取当前时间的秒数
getCurrentAMorPM显示当前时间是上午还是下午
getCurrentWeek获取周数
getCurrentData获取日期
updateClockTask使用TimerTask更新时钟
onDestroy关闭定时器,防止内存泄露
/*
 * 获取当前时间的小时和分钟数
 */
public String getCurrentHminTime() {
    int hour = mCalendar.get(Calendar.HOUR_OF_DAY); // HOUR_OF_DAY:24小时制
    int min = mCalendar.get(Calendar.MINUTE);
    changeLayoutColor(hour); // 改变页面背景和字体颜色
    return String.format(Locale.CHINA, "%02d:%02d", hour, min);
} // end getCurrentHminTime

/*
 * 获取当前时间的秒数
 */
public String getCurrentSecondTime() {
    int second = mCalendar.get(Calendar.SECOND);
    return String.format(Locale.CHINA, "%02d", second);
} // end getCurrentSecondTime

/*
 * 显示当前时间是上午还是下午
 */
public String getCurrentAMorPM() {
    if (mCalendar.get(Calendar.AM_PM) == Calendar.AM) {
        return "AM"; // 上午
    } else {
        return "PM"; // 下午
    }
} // end getCurrentAMorPM

/*
 * 获取周数
 */
public String getCurrentWeek() {
    String[] weeks = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
    int week = mCalendar.get(Calendar.DAY_OF_WEEK) - 1;
    return weeks[week];
} // end getCurrentWeek

/*
 * 获取日期
 */
public String getCurrentData() {
    int year = mCalendar.get(Calendar.YEAR);
    int month = mCalendar.get(Calendar.MONTH) + 1; // Calendar.MONTH:0~11
    int day = mCalendar.get(Calendar.DAY_OF_MONTH);
    return String.format(Locale.CHINA, "%d/%d/%d", year, month, day);
} // end getCurrentData

/*
 * 使用 TimerTask 更新时钟
 */
public void updateClockTask() {
    TimerTask timerTask = new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(() -> {
                /* 更新 Calendar 和 TextView */
                mCalendar = Calendar.getInstance(mTimeZone);
                mHminTv.setText(getCurrentHminTime());
                mSecondTv.setText(getCurrentSecondTime());
                mAMorPMTv.setText(getCurrentAMorPM());
                mWeekTv.setText(getCurrentWeek());
                mDataTv.setText(getCurrentData());
            }); // end runOnUiThread
        } // end run
    }; // end new TimerTask()
    mTimer.schedule(timerTask, 0, 1000); // 每秒更新一次时钟
} // end updateClockTask

/*
 * 关闭定时器,防止内存泄露
 */
protected void onDestroy() {
    super.onDestroy();
    mTimer.cancel();
    mTimer = null;
} // end onDestroy

⑹ onCreate

◼ API

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_digital_clock);

    init(); // 初始化
    setActionBar(); // 自定义导航栏样式
    updateClockTask(); // 更新时钟
} // end onCreate

6. 最终效果

在这里插入图片描述


Android 数字时钟实现
04-17 1014
package com.readystatesoftware.viewbadger; import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Paint; import android.g
android 数字时钟代码大全,Android自定义view实现数字时钟
weixin_29927289的博客
05-26 1066
最近在项目中遇到了一个需要实时更新时间的需求,并且用的地方还是挺多的,无奈做了一个简单的view来时现这个数字时钟。首先看一下效果,比较简单,就是显示时分秒。实现思路比较简单,利用handler的延时发送来实现事件的实时更新。1.因为现实的最终效果只是一个字符,所以就直接继承TextView来实现时间的展示,代码如下在初始化的时候直接将当前对象最为最终的显示对象,2。因为最终显示的是事件,我们要获...
详解java定时任务
热门推荐
chenssy 的技术博客
06-20 8万+
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。一、简介      在java中一个完整定时任务需要由TimerTimerTask两个类来配合完成。 API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任
Android Studio编写的简单数字时钟
11-09
Android Studio 3.2.1编写的简单数字时钟(用子线程发送消息到主线程的方式实现,有丰富的注释,方便理解)。
TimerTimerTask的真正原理&使用介绍
WitsMakeMen的专栏
01-31 340
链接:http://www.importnew.com/18542.html 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void ru
Android实战第一篇——时钟+闹钟+计时器+秒表
进击的程序猿
05-22 1万+
学习了快一学期的Android了,之前的知识点都是零散的学习的,只有当我们真正的去把他们用起来的时候才会发现难点,自己才会独立尝试去解决某个问题。接下来是我的一个简单的多功能时钟的小实战(视频资源https://pan.baidu.com/s/1mL8VUVC-9W9lO6IEpobDZg 密码:2ajv) 具体的效果可以参考手机上的时钟。   首先我们来看一看布局文件layout_main...
定时器第1篇——Timer详解及根据测试结果分析schedule与scheduleAtFixedRate区别
ShenDaiSun的博客
01-20 1784
1.概述                 Timer进行一个完整的定时任务需要结合TimerTask类一起使用。         Timer:是JDK提供的一个定时器工具,使用时会在主线程之外开启一个单独的线程用于执行指定的计划任务。可安排任务执行一次(延迟执行)或者定期重复执行多次。         TimerTask:是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行...
HarmonyOS APP开发入门3——组件(六 时间组件 )---Clock,TickTimer,TimePicker
itcyy的博客
04-12 2257
HarmonyOS APP开发入门3——组件(六 时间组件 )—Clock,TickTimer,TimePicker 文章目录HarmonyOS APP开发入门3——组件(六 时间组件 )---Clock,TickTimer,TimePicker前言Clock时钟组件TickTimer定时器组件TimePicker组件 前言 大家好,本章是鸿蒙开发的重头戏,时间组件 Clock时钟组件 组件说明 是Text的子类,所以可以使用Text的一些属性。 常用属性 **属性名称 ** 功能说明 ti
Android 开发第七弹:简易时钟(秒表)
nomasp
10-08 5383
本文承接,Android 开发第五弹:简易时钟(闹钟) 和 Android 开发第六弹:简易时钟(计时器),这一部分是关于秒表的。 布局同样是新建一个类(StopWatchView)并扩展自LinearLayout,并将其用作布局。<myapplication.nomasp.com.clock.StopWatchView android : id = "@+id/tabStopWatch"
Android 开发第六弹:简易时钟(计时器)
nomasp
10-08 5432
接上篇Android 开发第五弹:简易时钟(闹钟) ,这次是一个时钟类应用,目前依旧是主要的功能,长得还是很挫。当然了,核心功能是有的……时钟先把简单的时钟给列出来吧,这里都写的很简单,即便要用世界各个城市的话,也只是相应的加上或减去几个小时。新建TimeView类,并扩展自LinearLayout,然后布局文件和上一篇中那么写就好了。<myapplication.nomasp.com.clock.
Android Studio代码】数字时钟
09-02
Android Studio 2.3.3做的数字时钟例子,主要用到的代码有:mTextView_Time = (TextView)findViewById(R.id.TextView_Time);、 mRunnable = new Runnable()、public void handleMessage(Message message)、new Thread(mRunnable).start();。
Android源码数字液晶时钟Demo
10-14
Android源码数字液晶时钟Demo,博客地址:http://blog.csdn.net/yayun0516
android仿锤子数字时钟
01-02
android仿锤子数字时钟。上一次这个例子有点小bug修改了。再上传。本人博客是:day_moon开发工具是e
Android液晶字体、LED数字时钟显示
07-11
Android液晶字体、LED数字时钟显示,添加到资源库,可实现安卓电子时钟效果
任务调度: Timer + TimerTask
beOkWithAnything
06-30 140
package com.yunding.concurrent; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Timer; import java.util.TimerTask; /** * 任务调度: Timer + TimerTask * 高级用法: Spring + q...
Timer+TimerTask详解
听海的博客
06-05 638
本篇讲解如何使新创建的Timer为守护线程。先看一下API中提供的一个方法。 对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。如果调用者想要快速终止计时器的任务执行线程,那么调用者应该调用计时器的
android 自定义 数字时钟,Android自定义数字时钟代码
weixin_39640687的博客
05-26 158
Android自定义数字时钟代码import java.util.Calendar;import android.content.Context;import android.os.Handler;import android.os.SystemClock;import android.text.format.DateFormat;import android.util.AttributeSet;...
java中使用线程实现Timer(定时器)原理和源码
秦梦瑶的专栏
10-28 542
2007年06月21日 14:44:00 下载源码和示例1 原理:启动一个线程来刷时间,缺点是不太精确,可能跟线程的优先级有关系。会有0-10ms的误差。精确到0.1s是没有问题的。 package timer;public class Timer ...{ private long interval; // private boolean enabled; privat
TimerTimerTask
qq_43664684的博客
06-15 386
TimerTimerTsak 定时任务TimerTask简介 定时器Timer简介 Timer关键函数 定时器的一般使用方法 实践:倒计时小程序 定时任务TimerTask TimerTask 一个抽象类(实现的时候必须重写run方法),它的子类代表一个可以被Timer计划的任务,类似于Runnable。 注意:Timertask作为一个在子线程中运行的任务不能够直接操作UI控件,可以在run方法中给主线程发消息。 m_timer = new Timer(); m_timer.sche
写文章

热门文章

  • 软件安装教程——X-AnyLabeling 安装与自动标注 6213
  • 语义分割——SAM 模型环境配置和使用教程 4928
  • 小项目开发——Android 音乐播放器 3650
  • 语义分割——YOLOv8-Seg【train】【predict】参数汇总与调参建议 3527
  • 目标检测——基于 YOLOv8 实现图像检测 3269

分类专栏

  • 小项目开发 5篇
  • 网络剪枝 1篇
  • 软件安装教程 2篇
  • 学习笔记 4篇
  • 图书管理系统 3篇
  • 语义分割 3篇
  • 目标检测 2篇
  • OCR 1篇
  • 算法 1篇

最新评论

  • 语义分割——Grounded Segment Anything 环境配置和使用教程(已解决 name ‘_C’ is not defined 报错)

    Re.Gin: 环境这东西是这样的表情包

  • 语义分割——SAM 模型环境配置和使用教程

    Re.Gin: 这个得去找一下开源工具,目前我还不了解有哪些表情包

  • 语义分割——SAM 模型环境配置和使用教程

    吴继薇: 请问如何手动选择点 来生成mask

  • 语义分割——Grounded Segment Anything 环境配置和使用教程(已解决 name ‘_C’ is not defined 报错)

    jadeyee: 搞出来了,表情包,什么都没变用vs code运行就没问题了,pycharm还是不行

  • 语义分割——Grounded Segment Anything 环境配置和使用教程(已解决 name ‘_C’ is not defined 报错)

    jadeyee: 您好,改过了版本还是显示找不到文件,然后降了cuda版本,官方113我降到了111,按照您的方法运行了,那几个文件都安装成功了,结果运行text的时候报错了name _c,请问您的cuda和配套的torch版本是什么表情包

最新文章

  • 网络剪枝——network-slimming 项目复现
  • 学习笔记——一些数据转换脚本(Python)
  • 小项目开发——旅游区景点导游系统
2024年9篇
2023年13篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家漯河商场美陈重庆万州玻璃钢雕塑泡沫玻璃钢卡通雕塑报价河南商场美陈采购商场气球美陈公司吉林小品系列玻璃钢雕塑定制南庄校园玻璃钢人物雕塑贵州玻璃钢雕塑工程云南人物玻璃钢雕塑销售厂家东川区玻璃钢雕塑广东常用商场美陈哪家好商场美陈培训玻璃钢塑料雕塑制作公司日照玻璃钢雕塑公司北京商场节庆美陈铜玻璃钢雕塑效果如何香橙玻璃钢卡通雕塑设计厂家吉林佛像玻璃钢雕塑市场价格合理的玻璃钢雕塑玻璃钢仿真仙鹤雕塑榆林玻璃钢雕塑厂家价格发光玻璃钢雕塑制作方法商场美陈岗位要求江津玻璃钢南瓜屋雕塑中山玻璃钢雕塑定制厂家江西佛像玻璃钢雕塑订做价格美陈冬季商场北滘玻璃钢人物雕塑在线下单无锡精美玻璃钢座椅雕塑玻璃钢雕塑仿真运动鞋香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化