直播电商源码,商品出售倒计时的定时器效果
直播电商源码,商品出售倒计时的定时器效果实现的相关代码
在MainActivity中,设置屏幕为横屏
1 | setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
编写布局文件
1 | <?xml version= "1.0" encoding= "utf-8" ?><br><LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" <br> xmlns:tools= "http://schemas.android.com/tools" <br> android:layout_width= "match_parent" <br> android:orientation= "vertical" <br> android:id= "@+id/countdown_layout" <br> android:layout_height= "match_parent" <br> tools:context= ".MainActivity" ><br> <TextView<br> android:layout_width= "match_parent" <br> android:layout_height= "0dp" <br> android:layout_weight= "2" <br> android:text= "大学生活还剩:" <br> android:textColor= "@color/design_default_color_error" <br> android:textSize= "30sp" <br> android:textStyle= "bold" <br> android:gravity= "center" <br> /><br> <LinearLayout<br> android:layout_width= "match_parent" <br> android:layout_height= "0dp" <br> android:layout_weight= "3" <br> android:orientation= "horizontal" ><br> <TextView<br> style= "@style/count_down_time" <br> android:background= "@color/cardview_shadow_start_color" <br> android:id= "@+id/week" <br> android:text= "11月" <br> /><br> <TextView<br> style= "@style/count_down_time" <br> android:background= "@color/cardview_shadow_start_color" <br> android:id= "@+id/day" <br> android:text= "00天" <br> /><br> <TextView<br> style= "@style/count_down_time" <br> android:background= "@color/cardview_shadow_start_color" <br> android:id= "@+id/hour" <br> android:text= "01时" <br> /><br> <TextView<br> style= "@style/count_down_time" <br> android:background= "@color/cardview_shadow_start_color" <br> android:id= "@+id/minute" <br> android:text= "07分" <br> /><br> <TextView<br> style= "@style/count_down_time" <br> android:background= "@color/cardview_shadow_start_color" <br> android:id= "@+id/second" <br> android:text= "07秒" <br> /><br> </LinearLayout><br></LinearLayout> |
找到控件,可以添加jake大佬的butterknife依赖,在app中的build.gradle依赖中添加两行
1 | implementation 'com.jakewharton:butterknife:10.2.3' <br>annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' |
实现思路将未来的某个时间,减去当前时间,并格式化成日期,赋值给TextView,运用定时器循环执行,MainActivity的全部代码。
1 | package com.example.schoolcountdown;<br> import android.content.pm.ActivityInfo;<br> import android.os.Bundle;<br> import android.widget.TextView;<br> import com.blankj.utilcode.util.LogUtils;<br> import java.text.DateFormat;<br> import java.text.SimpleDateFormat;<br> import java.util.Calendar;<br> import java.util.Date;<br> import java.util.concurrent.Executors;<br> import java.util.concurrent.ScheduledExecutorService;<br> import java.util.concurrent.TimeUnit;<br> import androidx.appcompat.app.AppCompatActivity;<br> import butterknife.BindView;<br> import butterknife.ButterKnife;<br> public class MainActivity extends AppCompatActivity {<br> //绑定对应的控件<br> @BindView(R.id.week)<br> TextView mWeek;<br> @BindView(R.id.day)<br> TextView mDay;<br> @BindView(R.id.hour)<br> TextView mHour;<br> @BindView(R.id.minute)<br> TextView mMinute;<br> @BindView(R.id.second)<br> TextView mSecond;<br> private long targetTime;<br> private Calendar calendar;<br> private long currentTime;<br> private long timeLeft;<br> @Override<br> protected void onCreate(Bundle savedInstanceState) {<br> super.onCreate(savedInstanceState);<br> setContentView(R.layout.activity_main);<br> //ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE设置为横屏<br> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);<br> //绑定黄油刀的依赖<br> ButterKnife.bind(this);<br> //============================================<br> //获取目标时间<br> //测试定时器<br> timerRun(0,1);<br> }<br> private void getTargetTime() {<br> //java.util.Calendar<br> calendar = Calendar.getInstance();<br> calendar.clear();<br> calendar.set(2022,5,24,12,0,0);<br> targetTime = calendar.getTimeInMillis();<br> }<br> private void timerRun(long delay,long period) {<br> Runnable runable = new Runnable(){<br> public void run() {<br> setAllText();<br> }<br> };<br> ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();<br> service.scheduleAtFixedRate(runable, delay, period, TimeUnit.SECONDS);<br> }<br> private void setAllText() {<br> getTargetTime();<br> //yyyy-MM-dd hh:mm:ss<br> currentTime = System.currentTimeMillis();<br> timeLeft = targetTime - currentTime;<br> Date date = new Date(timeLeft);<br> /*LogUtils.d(targetTime + "------->" + currentTime + "=======" + timeLeft);<br> SimpleDateFormat simpleDateFormat = new SimpleDateFormat("y-MM-dd hh:mm:ss");<br> String format = simpleDateFormat.format(date);<br> LogUtils.d("时间为" + format);*/<br> DateFormat formatter1 = new SimpleDateFormat("MM");<br> setTime(formatter1,date);<br> SimpleDateFormat dd = new SimpleDateFormat("dd");<br> setTime1(dd,date);<br> SimpleDateFormat hh = new SimpleDateFormat("hh");<br> setTime2(hh,date);<br> SimpleDateFormat mm = new SimpleDateFormat("mm");<br> setTime3(mm,date);<br> SimpleDateFormat ss = new SimpleDateFormat("ss");<br> setTime4(ss,date);<br> }<br> private void setTime4(SimpleDateFormat ss, Date date) {<br> String format = ss.format(date);<br> mSecond.setText(format + "秒");<br> }<br> private void setTime3(SimpleDateFormat mm, Date date) {<br> String format = mm.format(date);<br> mMinute.setText(format + "分钟");<br> }<br> private void setTime2(SimpleDateFormat hh, Date date) {<br> String format = hh.format(date);<br> mHour.setText(format + "小时");<br> }<br> private void setTime1(SimpleDateFormat dd, Date date) {<br> String format = dd.format(date);<br> mDay.setText(format + "天");<br> }<br> private void setTime(DateFormat formatter1, Date date) {<br> String format = formatter1.format(date);<br> mWeek.setText(format + "月 ");<br> }<br>} |
以上就是 直播电商源码,商品出售倒计时的定时器效果实现的相关代码,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现