温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中怎么利用定时器和倒计时实现淘宝秒杀功能

发布时间:2021-06-29 15:49:04 来源:亿速云 阅读:216 作者:Leah 栏目:移动开发

这期内容当中小编将会给大家带来有关Android中怎么利用定时器和倒计时实现淘宝秒杀功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

目录结构

Android中怎么利用定时器和倒计时实现淘宝秒杀功能

效果图:

Android中怎么利用定时器和倒计时实现淘宝秒杀功能

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(150,20,20,20);     viewHolder.imageView.setBackgroundColor(Color.BLUE);    } else {     MyViewHolder viewHolder = (MyViewHolder) holder;     viewHolder.textView.setText(" 淘宝 " + 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(1,55,3);    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("时间格式错误,请检查你的代码");    }      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, "计数完成",            Toast.LENGTH_SHORT).show();          stop();          setTime(0, 0, 0);//重置为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

<?xml version="1.0" encoding="utf-8"?>  <RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:paddingBottom="@dimen/activity_vertical_margin"   android:paddingLeft="@dimen/activity_horizontal_margin"   android:paddingRight="@dimen/activity_horizontal_margin"   android:paddingTop="@dimen/activity_vertical_margin"   tools:context="com.nodeprogress.snapupview.MainActivity">       <include layout="@layout/home_snap_up"></include>  </RelativeLayout>

home_snap_up.xml

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="wrap_content"      xmlns:app="http://schemas.android.com/apk/res-auto"      android:orientation="vertical"      android:background="@android:color/white"      android:padding="15dp"   >     <LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal"    >      <TextView     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_gravity="center_vertical"     android:text="秒杀"     android:textColor="@android:color/holo_red_light"     android:textSize="20sp"     />      <com.nodeprogress.snapupview.SnapUpCountDownTimerView     android:id="@+id/RushBuyCountDownTimerView"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_marginLeft="20dp"     app:viewSize="12"     >    </com.nodeprogress.snapupview.SnapUpCountDownTimerView>        <TextView     android:layout_width="match_parent"     android:layout_height="match_parent"     android:gravity="center_vertical|right"     android:text="更多 >"     android:textSize="15sp"     />   </LinearLayout>     <com.nodeprogress.snapupview.View.HorizontalRecycleViewLoadMore    android:id="@+id/recycle"    android:layout_marginTop="10dp"    android:layout_width="match_parent"    android:layout_height="wrap_content">     </com.nodeprogress.snapupview.View.HorizontalRecycleViewLoadMore>        </LinearLayout>

view_countdowntimer.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="@android:color/white"      android:orientation="horizontal"   >     <LinearLayout    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/bg_snap_up"    android:padding="5dp"    >      <TextView     android:id="@+id/tv_hour_decade"     />      <TextView     android:id="@+id/tv_hour_unit"          android:layout_marginLeft="1dp"/>   </LinearLayout>       <TextView    android:id="@+id/colon_hour"    android:layout_width="wrap_content"    android:layout_height="match_parent"        />     <LinearLayout    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/bg_snap_up"    android:padding="5dp"    >      <TextView     android:id="@+id/tv_min_decade"     />      <TextView     android:id="@+id/tv_min_unit"          android:layout_marginLeft="1dp"/>   </LinearLayout>       <TextView    android:id="@+id/colon_minute"    android:layout_width="wrap_content"    android:layout_height="match_parent"        />       <LinearLayout    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/bg_snap_up_red"    android:padding="5dp"    >      <TextView     android:id="@+id/tv_sec_decade"     />      <TextView     android:id="@+id/tv_sec_unit"          android:layout_marginLeft="1dp"/>   </LinearLayout>    </LinearLayout>

上述就是小编为大家分享的Android中怎么利用定时器和倒计时实现淘宝秒杀功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI