android学习记录(六)

249 阅读1分钟

「这是我参与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>