首页 > 系统 > Android > 正文

Android定时器和倒计时实现淘宝秒杀功能

2019-10-22 18:15:29
字体:
来源:转载
供稿:网友

本文实例为大家分享了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"       style="@style/RushBuyCountDownTimerViewStyle"/>      <TextView       android:id="@+id/tv_hour_unit"       style="@style/RushBuyCountDownTimerViewStyle"       android:layout_marginLeft="1dp"/>   </LinearLayout>     <TextView     android:id="@+id/colon_hour"     android:layout_width="wrap_content"     android:layout_height="match_parent"     style="@style/SnapUpViewColon"     />    <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"       style="@style/RushBuyCountDownTimerViewStyle"/>      <TextView       android:id="@+id/tv_min_unit"       style="@style/RushBuyCountDownTimerViewStyle"       android:layout_marginLeft="1dp"/>   </LinearLayout>     <TextView     android:id="@+id/colon_minute"     android:layout_width="wrap_content"     android:layout_height="match_parent"     style="@style/SnapUpViewColon"     />     <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"       style="@style/RushBuyCountDownTimerViewStyleRed"/>      <TextView       android:id="@+id/tv_sec_unit"       style="@style/RushBuyCountDownTimerViewStyleRed"       android:layout_marginLeft="1dp"/>   </LinearLayout>  </LinearLayout> 

代码全部贴出来了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表