1.ProgerssBar(进度条)
平时我们在下载东西的时候都会遇见进度条,进度条主要分为两种,一种是圆形的进度条还有一种是矩形的进度条。怎么去得到它们呢,在写控件的时候都是写ProgressBar,这时我们需要通过属性来得到不同的进度条:
矩形进度条:
<ProgressBar android:id="@+id/pb_main_progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" />
圆形进度条:
<ProgressBar android:id="@+id/progressBar2" style="?android:attr/progressBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" />
如何实现进度条的进程呐,那就需要在Java文件中获取进度条的id去设置进程了,这时我们需要用到线程,不过在创建线程的时候我们要设置主线程和子线程,因为主线程里面不能执行耗时的操作,一旦使用了耗时的操作就会报ANR(应用程序无响应)的错误,所以为了不让主线程报错我们需要写一个子线程来替主线程做事,这样来说应该可以了,但是其实它俩是没有任何关系的,所以我们需要找它们俩的中介来建立联系(Handler),代码如下:
import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; import java.util.Random; /** * Created by Administrator on 2017/7/19. */ public class ProgressbarActivity extends AppCompatActivity { private TextView textview; private ProgressBar progressbar; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_progress); //获取id textview = (TextView) findViewById(R.id.tv_main_textview); progressbar = (ProgressBar) findViewById(R.id.pb_main_progressBar); } //ANR //application not responsing应用程序无响应 //why:因为在主线程中执行了耗时操作 //how:把耗时操作 写到子线程中
//主线