Android 仿京東秒殺倒計時代碼
效果圖如下所示:
由于我仿的京東是分模塊的,所以,這次主要描述秒殺模塊!
首先設(shè)置好時間的背景
drawable文件下創(chuàng)建shape_miaosha_time.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#000"></solid> <corners android:radius="2.5dp"></corners> </shape>
然后主要布局,你可以單獨書寫,然后引用出去
**count_down.xml** <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center_vertical"> <TextView android:id="@+id/tv_miaosha" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:text="京東秒殺" android:textColor="#f00" android:textSize="20sp" /> <TextView android:id="@+id/tv_miaosha_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:text="12點場" android:textSize="20sp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_miaosha_shi" android:layout_width="25dp" android:layout_height="25dp" android:background="@drawable/shape_miaosha_time" android:gravity="center" android:text="1" android:textColor="#fff" android:textSize="15sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="3dp" android:text=":" /> <TextView android:id="@+id/tv_miaosha_minter" android:layout_width="25dp" android:layout_height="25dp" android:background="@drawable/shape_miaosha_time" android:gravity="center" android:text="1" android:textColor="#fff" android:textSize="15sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="3dp" android:text=":" /> <TextView android:id="@+id/tv_miaosha_second" android:layout_width="25dp" android:layout_height="25dp" android:background="@drawable/shape_miaosha_time" android:gravity="center" android:text="1" android:textColor="#fff" android:textSize="15sp" /> </LinearLayout> </LinearLayout> </LinearLayout>
這里寫邏輯代碼
//使用handler用于更新UI private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); countDown(); sendEmptyMessageDelayed(0, 1000); } }; /** * 秒殺 */ private void countDown() { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date curDate = new Date(System.currentTimeMillis()); String format = df.format(curDate); StringBuffer buffer = new StringBuffer(); String substring = format.substring(0, 11); buffer.append(substring); Log.d("ccc", substring); Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); if (hour % 2 == 0) { mMiaoshaTimeTv.setText(hour + "點場"); buffer.append((hour + 2)); buffer.append(":00:00"); } else { mMiaoshaTimeTv.setText((hour - 1) + "點場"); buffer.append((hour + 1)); buffer.append(":00:00"); } String totime = buffer.toString(); try { java.util.Date date = df.parse(totime); java.util.Date date1 = df.parse(format); long defferenttime = date.getTime() - date1.getTime(); long days = defferenttime / (1000 * 60 * 60 * 24); long hours = (defferenttime - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60); long minute = (defferenttime - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60); long seconds = defferenttime % 60000; long second = Math.round((float) seconds / 1000); mMiaoshaShiTv.setText("0" + hours + ""); if (minute >= 10) { mMiaoshaMinterTv.setText(minute + ""); } else { mMiaoshaMinterTv.setText("0" + minute + ""); } if (second >= 10) { mMiaoshaSecondTv.setText(second + ""); } else { mMiaoshaSecondTv.setText("0" + second + ""); } } catch (ParseException e) { e.printStackTrace(); } }
注意,這里才是開啟的代碼
private void startCountDown() { handler.sendEmptyMessage(0); }
總結(jié)
以上所述是小編給大家介紹的Android 仿京東秒殺倒計時代碼 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
聊聊GridView實現(xiàn)拖拽排序及數(shù)據(jù)交互的問題
這篇文章主要介紹了聊聊GridView實現(xiàn)拖拽排序及數(shù)據(jù)交互的問題,整體實現(xiàn)思路是通過在一個容器里放置兩個dragview,DragView里面進行View的動態(tài)交換以及數(shù)據(jù)交換,具體實現(xiàn)代碼跟隨小編一起看看吧2021-11-11Android開發(fā)實現(xiàn)的內(nèi)存管理工具類
這篇文章主要介紹了Android開發(fā)實現(xiàn)的內(nèi)存管理工具類,可實現(xiàn)計算手機內(nèi)部與外部的總存儲空間、可用存儲空間等功能,需要的朋友可以參考下2017-11-11Android RecyclerView實現(xiàn)水平、垂直方向分割線
這篇文章主要為大家詳細介紹了Android RecyclerView實現(xiàn)水平、垂直方向分割線,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Android連接MySQL數(shù)據(jù)庫并進行增刪改查操作示例講解
這篇文章主要介紹了Android 連接MySQL數(shù)據(jù)庫并進行增刪改查操作示例講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Android編程之自定義AlertDialog(退出提示框)用法實例
這篇文章主要介紹了Android編程之自定義AlertDialog(退出提示框)用法,結(jié)合實例形式較為詳細的分析了自定義AlertDialog的頁面布局與功能實現(xiàn)相關(guān)技巧,需要的朋友可以參考下2016-01-01