「这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战」
模拟下载进度条
DownloadActivity
package com.example.uicomponenttest;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class DownloadActivity extends AppCompatActivity {
private Button download;
private ProgressBar progressBar;
private TextView textView;
private Handler handler;
private int progress=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
initView();
}
private void initView() {
textView=findViewById(R.id.download_textView);
progressBar=findViewById(R.id.download_progress);
handler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
switch (msg.what){
case 1:
if(progress<=100){
progressBar.setProgress(progress);
textView.setText("已下载"+progress+"%");
progress++;
handler.sendEmptyMessageDelayed(1,200);
}else{
Toast.makeText(DownloadActivity.this,"下载完成!",Toast.LENGTH_SHORT).show();
}
break;
}
super.handleMessage(msg);
}
};
download=findViewById(R.id.download_download);
download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
}).start();
}
});
}
}
activity_download.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".DownloadActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/download_textView"
/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:id="@+id/download_progress"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/download_download"
android:text="下载"/>
</LinearLayout>
轮播图
ViewPagerActivity
package com.example.viewpager;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
public class ViewPagerActivity extends AppCompatActivity {
private ImageView indicator;//表示圆点指示器
private ImageView[] indicators;//保存3个圆点指示器的数组.
private boolean isContinue=true;
private ViewPager viewPager;
private ViewGroup viewGroup;
private AtomicInteger index=new AtomicInteger();
private Handler handler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
viewPager.setCurrentItem(msg.what);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
initView();
}
private void initView(){
viewPager=findViewById(R.id.adv);
viewGroup=findViewById(R.id.view_indicators);
List<View> listPics=new ArrayList<>();
ImageView img1=new ImageView(this);
img1.setBackgroundResource(R.drawable.img_default0);
ImageView img2=new ImageView(this);
img2.setBackgroundResource(R.drawable.img_default1);
ImageView img3=new ImageView(this);
img3.setBackgroundResource(R.drawable.img_default2);
listPics.add(img1);
listPics.add(img2);
listPics.add(img3);
indicators =new ImageView[listPics.size()];
for(int i=0; i<indicators.length; i++){
indicator=new ImageView(this);
indicator.setLayoutParams(new LinearLayout.LayoutParams(30,30));
indicator.setPadding(5,5,5,5);
indicators[i]=indicator;
if(i==0){
indicators[i].setBackgroundResource(R.drawable.focus);
}else{
indicators[i].setBackgroundResource(R.drawable.infoucs);
}
viewGroup.addView(indicators[i]);
}
viewPager.setAdapter(new MyPagerAdapter(listPics));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
index.getAndSet(position);
for(int i=0; i<indicators.length; i++){
if(i==position){
indicators[i].setBackgroundResource(R.drawable.focus);
}else{
indicators[i].setBackgroundResource(R.drawable.infoucs);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
new Thread(new Runnable() {
@Override
public void run() {
while (true){
if(isContinue){
handler.sendEmptyMessage(index.get()%indicators.length);
index.incrementAndGet();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
viewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
isContinue=false;
break;
case MotionEvent.ACTION_UP:
isContinue=true;
break;
}
return false;
}
});
}
}
class MyPagerAdapter extends PagerAdapter {
private List<View> viewList;
public MyPagerAdapter(List<View> viewList){
this.viewList=viewList;
}
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
container.addView(viewList.get(position),0);
return viewList.get(position);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(viewList.get(position));
}
}
activity_view_pager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewPagerActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="160dp"
android:id="@+id/adv"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/view_indicators"
android:layout_below="@+id/adv"
android:layout_marginTop="-25dp"
android:orientation="horizontal"
android:gravity="right">
</LinearLayout>
</RelativeLayout>
</LinearLayout>