仿京東淘寶的秒殺倒計時實現
阿新 • • 發佈:2019-01-27
//菜鳥一枚請多指教
//這個是佈局檔案
<LinearLayout android:id="@+id/ll_xsqg" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="8dp" android:paddingBottom="8dp" android:paddingLeft="16dp"> <TextView android:layout_width="wrap_content"android:layout_height="wrap_content" android:textStyle="bold" android:textSize="14sp" android:text="熱門活動"/> <TextView android:text="時" android:textSize="25sp" android:textColor="@color/colorAccent" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextViewandroid:id="@+id/tv_hour" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:paddingTop="3dp" android:paddingBottom="3dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:textColor="@android:color/white" android:textSize="12sp"android:background="#afa" android:text="02"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:textStyle="bold" android:textColor="@android:color/black" android:text=":"/> <TextView android:text="分" android:textSize="25sp" android:textColor="@color/colorAccent" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_minute" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:paddingTop="3dp" android:paddingBottom="3dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:background="#afa" android:textColor="@android:color/white" android:textSize="12sp" android:text="15"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:textStyle="bold" android:textColor="@android:color/black" android:text=":"/> <TextView android:text="秒" android:textSize="25sp" android:textColor="@color/colorAccent" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_second" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:paddingTop="3dp" android:paddingBottom="3dp" android:paddingLeft="5dp" android:background="#afa" android:paddingRight="5dp" android:textColor="@android:color/white" android:textSize="12sp" android:text="36"/> </LinearLayout>
//然後是在Activity或者是Fragment裡書寫的程式碼
public
class
MainActivity
extends
Activity {
@Bind
(R.id.tv_hour)
TextView tvHour;
@Bind
(R.id.tv_minute)
TextView tvMinute;
@Bind
(R.id.tv_second)
TextView tvSecond;
private
long
mHour =
02
;
private
long
mMin =
15
;
private
long
mSecond =
36
;
private
boolean
isRun =
true
;
private
Handler timeHandler =
new
Handler() {
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
if
(msg.what==
1
) {
computeTime();
if
(mHour<
10
){
tvHour.setText(
"0"
+mHour+
""
);
}
else
{
tvHour.setText(
"0"
+mHour+
""
);
}
if
(mMin<
10
){
tvMinute.setText(
"0"
+mMin+
""
);
}
else
{
tvMinute.setText(mMin+
""
);
}
if
(mSecond<
10
){
tvSecond.setText(
"0"
+mSecond+
""
);
}
else
{
tvSecond.setText(mSecond+
""
);
}
}
}
};
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_home);
ButterKnife.bind(
this
);
startRun();
}
/**
* 開啟倒計時
*/
private
void
startRun() {
new
Thread(
new
Runnable() {
@Override
public
void
run() {
// TODO Auto-generated method stub
while
(isRun) {
try
{
Thread.sleep(
1000
);
// sleep 1000ms
Message message = Message.obtain();
message.what =
1
;
timeHandler.sendMessage(message);
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
/**
* 倒計時計算
*/
private
void
computeTime() {
mSecond--;
if
(mSecond <
0
) {
mMin--;
mSecond =
59
;
if
(mMin <
0
) {
mMin =
59
;
mHour--;
}
}
}
}
//好了這個程式碼就可以完美的實現倒計時啦!
//大家可以拿過去用了
//如果有哪裡做的有瑕疵還請大家多指教