How to use timer and countdown to realize Taobao second kill function in Android
This article mainly introduces the Android how to use timer and countdown to achieve Taobao second kill function related knowledge, the content is detailed and easy to understand, simple and fast operation, has a certain reference value, I believe you read this Android how to use timer and countdown to achieve Taobao second kill function article will have a harvest, let's take a look at it.
Directory structure
Effect picture:
ImageViewHolder
Public class imageViewHolder extends RecyclerView.ViewHolder {public ImageView imageView; public imageViewHolder (View itemView) {super (itemView); imageView = (ImageView) itemView;}}
MyViewHolder
Public class MyViewHolder extends RecyclerView.ViewHolder {public TextView textView; public MyViewHolder (View itemView) {super (itemView); textView = (TextView) itemView;}}
RecycleAdapter
Package com.nodeprogress.snapupview.SnapUp; import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; public class recycleAdapter extends RecyclerView.Adapter {Context context; public recycleAdapter (Context context) {this.context = context;} @ Override public RecyclerView.ViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {if (viewType = = 0) {return new imageViewHolder (new ImageView (context)) } else {return new MyViewHolder (new TextView (context));} @ Override public void onBindViewHolder (RecyclerView.ViewHolder holder, int position) {if (getItemViewType (position) = = 0) {imageViewHolder viewHolder = (imageViewHolder) holder; viewHolder.imageView.setPadding; viewHolder.imageView.setBackgroundColor (Color.BLUE);} else {MyViewHolder viewHolder = (MyViewHolder) holder; viewHolder.textView.setText ("Taobao" + position) } @ Override public int getItemCount () {return 21;} @ Override public int getItemViewType (int position) {return (position = = 20)? 0: 1;}}
MainActivity
Package com.nodeprogress.snapupview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import com.nodeprogress.snapupview.SnapUp.recycleAdapter; import com.nodeprogress.snapupview.View.HorizontalRecycleViewLoadMore; public class MainActivity extends AppCompatActivity {@ Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); HorizontalRecycleViewLoadMore recyclerView = (HorizontalRecycleViewLoadMore) findViewById (R.id.recycle); recyclerView.setAdapter (new recycleAdapter (MainActivity.this)) SnapUpCountDownTimerView rushBuyCountDownTimerView = (SnapUpCountDownTimerView) findViewById (R.id.RushBuyCountDownTimerView); rushBuyCountDownTimerView.setTime (1pm 55); rushBuyCountDownTimerView.start ();}}
SnapUpCountDownTimerView
Package com.nodeprogress.snapupview; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.TypedArray; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import java.util.Timer; import java.util.TimerTask; @ SuppressLint ("HandlerLeak") public class SnapUpCountDownTimerView extends LinearLayout {private TextView tv_hour_decade Private TextView tv_hour_unit; private TextView tv_min_decade; private TextView tv_min_unit; private TextView tv_sec_decade; private TextView tv_sec_unit; private Context context; private int hour_decade; private int hour_unit; private int min_decade; private int min_unit; private int sec_decade; private int sec_unit; private Timer timer; private Handler handler = new Handler () {public void handleMessage (Message msg) {countDown ();}} Public SnapUpCountDownTimerView (Context context, AttributeSet attrs) {super (context, attrs); this.context = context; LayoutInflater inflater = (LayoutInflater) context .getSystemService (Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate (R.layout.view_countdowntimer, this); tv_hour_decade = (TextView) view.findViewById (R.id.tv_hour_decade); tv_hour_unit = (TextView) view.findViewById (R.id.tv_hour_unit) Tv_min_decade = (TextView) view.findViewById (R.id.tv_min_decade); tv_min_unit = (TextView) view.findViewById (R.id.tv_min_unit); tv_sec_decade = (TextView) view.findViewById (R.id.tv_sec_decade); tv_sec_unit = (TextView) view.findViewById (R.id.tv_sec_unit); TypedArray array = context.obtainStyledAttributes (attrs, R.styleable.SnapUpCountDownTimerView) Int size = array.getInteger (R.styleable.SnapUpCountDownTimerView_viewSize, 12); tv_hour_decade.setTextSize (size); tv_hour_unit.setTextSize (size); tv_min_decade.setTextSize (size); tv_min_unit.setTextSize (size); tv_sec_decade.setTextSize (size); tv_sec_unit.setTextSize (size); ((TextView) view.findViewById (R.id.colon_minute)) .setTextSize (size) ((TextView) view.findViewById (R.id.colon_hour)) .setTextSize (size);} public void start () {if (timer = = null) {timer = new Timer (); timer.schedule (new TimerTask () {@ Override public void run () {handler.sendEmptyMessage (0);}}, 0, 1000) }} public void stop () {if (timer! = null) {timer.cancel (); timer = null;}} public void setTime (int hour, int min, int sec) {if (hour > = 60 | | min > = 60 | | sec > = 60 | | hour < 0 | | min < 0 | sec < 0) {throw new RuntimeException ("incorrect time format, please check your code");} hour_decade = hour / 10 Hour_unit = hour-hour_decade * 10; min_decade = min / 10; min_unit = min-min_decade * 10; sec_decade = sec / 10; sec_unit = sec-sec_decade * 10; tv_hour_decade.setText (hour_decade + ""); tv_hour_unit.setText (hour_unit + "); tv_min_decade.setText (min_decade +"); tv_min_unit.setText (min_unit +") Tv_sec_decade.setText (sec_decade + ""); tv_sec_unit.setText (sec_unit + "") } private void countDown () {if (isCarry4Unit (tv_sec_unit)) {if (isCarry4Decade (tv_sec_decade)) {if (isCarry4Unit (tv_min_unit)) {if (isCarry4Decade (tv_min_decade)) {if (isCarry4Unit (tv_hour_unit)) {if (isCarry4Decade (tv_hour_decade)) {Toast.makeText (context, "count complete" Toast.LENGTH_SHORT) .show () Stop (); setTime (0,0,0); / / reset to 0} private boolean isCarry4Decade (TextView tv) {int time = Integer.valueOf (tv.getText (). ToString ()); time = time-1; if (time < 0) {time = 5; tv.setText (time + "); return true } else {tv.setText (time + "); return false;}} private boolean isCarry4Unit (TextView tv) {int time = Integer.valueOf (tv.getText (). ToString ()); time = time-1; if (time < 0) {time = 9; tv.setText (time +"); return true;} else {tv.setText (time + "); return false;}
Activity_main.xml
Home_snap_up.xml
View_countdowntimer.xml
This is the end of the article on "how to use timer and countdown in Android to achieve Taobao second kill function". Thank you for reading! I believe that everyone has a certain understanding of the knowledge of "how to use timer and countdown to achieve Taobao second kill function in Android". If you still want to learn more knowledge, welcome to follow the industry information channel.