1.进度条实现

布局文件:

<?xml version="1.0" encoding="utf-8"?>                                

style="?android:attr/progressBarStyleHorizontal" 设置进度条的样式,不设置默认为椭圆状的进度条

实现:

public class MainActivity extends AppCompatActivity {    private ProgressBar pb;//进度条    private int progressBar;//进度值    private TextView tv;//显示进度值的文本框    private int code = 1;    private MyHandler mh = new MyHandler();//异步处理UI组件    private class MyHandler extends Handler{        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (code == msg.what){                progressBar++;                pb.setProgress(progressBar);                tv.setText(progressBar + "%");            }        }    }    public void setProgressBar(int progressBar) {        this.progressBar = progressBar;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        pb = findViewById(R.id.pb);        tv = findViewById(R.id.text1);    }    //进度条    public void setProgress(View view) {        if (progressBar == 0){            new MyThread().start();        }    }    //子线程    private class MyThread extends  Thread{        @Override        public void run() {            super.run();            while (true) {                try {                    Thread.sleep(100);//0.1秒延迟   注:该耗时操作不能放在主线程中!!!                } catch (Exception e) {                    e.printStackTrace();                }                if (progressBar == 100) {//进度满100时,要清0                    progressBar = 0;                    break;                }                Message mg = new Message();                mg.what = 1;                mh.sendMessage(mg);//因为子线程无法操控UI组件(进度条组件除外),所以将任务交由Handler进行异步处理            }        }    }}

效果图:点击加载按钮,进度条就会加载

Android进度条、自动提示框、下拉框动态数据加载_第1张图片

线程注意事项:
      不能在主线程中执行耗时的操作,只能在子线程中操作
      另外,在子线程中不能操作主线程中的控件(ProgressBar除外)

2.自动提示框

布局文件:

<?xml version="1.0" encoding="utf-8"?>    

实体类:

public class Book {    private Integer id;    private String name;    private Integer image;    public Book() {    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getImage() {        return image;    }    public void setImage(Integer image) {        this.image = image;    }}

数据准备:

public class BookDAO {    public List list() {        List bookList = new ArrayList();        String[] names = {"愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",                "小象", "美人鱼", "九尾狐"};        int[] images = {R.drawable.bird, R.drawable.cat, R.drawable.chicken,                R.drawable.cow, R.drawable.dog, R.drawable.dragon,                R.drawable.duck, R.drawable.elephant, R.drawable.fish,                R.drawable.fox};        Book b = null;        for (int i = 0; i < names.length; i++) {            b = new Book();            b.setId(i + 1);            b.setName(names[i]);            b.setImage(images[i]);            bookList.add(b);        }        return bookList;    }}

展示数据的布局文件:

<?xml version="1.0" encoding="utf-8"?>

实现:

public class MainActivity extends AppCompatActivity {    private String[] data1;    private ArrayAdapter adapter1;    private AutoCompleteTextView act;    @Override    protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);            act = findViewById(R.id.alert);        //1.准备数据        data1 = new String[]{ "愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭", "小象", "美人鱼", "九尾狐" };        //2.创建适配器        adapter1 = new ArrayAdapter(this,R.layout.adapter_text1,data1);        //3.绑定适配器        act.setAdapter(adapter1);    }}

效果图:自动提示框中输入'愤怒',会显示愤怒的小鸟

Android进度条、自动提示框、下拉框动态数据加载_第2张图片

注:自动提示框使用的是数组适配器,通过适配器将数据绑定到要显示的布局文件中,最后为自动提示框设置适配器

 

3.带图标的下拉框

布局文件:

<?xml version="1.0" encoding="utf-8"?>    

数据采用的与上个案例一样,如果不记得了,可以往上翻一翻

上一个案例的数据是有图片资源的

Android进度条、自动提示框、下拉框动态数据加载_第3张图片

注:这里有一点需要注意,存放图片时必须存放到这个文件中,如下图,否则数据加载时将无法访问到对应的图片资源

Android进度条、自动提示框、下拉框动态数据加载_第4张图片

展示数据的布局文件:

<?xml version="1.0" encoding="utf-8"?>                

实现:

public class MainActivity extends AppCompatActivity {    //图片下拉框    private List> data3;    private SimpleAdapter adapter3;//简易适配器    private Spinner sp1;//下拉框组件    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sp1 = findViewById(R.id.sp_2);        //1.数据准备        data3 = loadData3();        //2.创建简易适配器        adapter3 = new SimpleAdapter(this,data3,R.layout.adapter_text2,new String[]{"name","image"},new int[]{R.id.tv1,R.id.iv1});        //3.为下拉框绑定适配器        sp1.setAdapter(adapter3);    }    private List> loadData3() {        List list = new BookDAO().list();        List> mapList = new ArrayList>();        Map map = null;        for (Book book : list) {            map = new HashMap<>();            map.put("name",book.getName());            map.put("image",book.getImage());            mapList.add(map);        }        return mapList;    }}

效果图:

Android进度条、自动提示框、下拉框动态数据加载_第5张图片

更多相关文章

  1. Android 软件运行前加载图片
  2. Android应用程序组件Content Provider在应用程序之间共享数据的
  3. android 摄像头图像数据YUV转Bitmap, 再转Base64
  4. android webview 使用js加载json文件失败
  5. Android 加载大图片是出现的 OutOfMemoryError问题
  6. Android 读取网络数据
  7. android使用webview加载网页
  8. Android中数据库升级

随机推荐

  1. 如何有效的清除Android中无用的资源(静态
  2. [Android]使用platform密钥来给apk文件签
  3. android调用google地图
  4. Android之RadioGroup获取选中值
  5. Android 精选项目简介(可参考)
  6. 控件事件android中自定义控件
  7. Android tips(九)-->Android录屏与转化gif
  8. Android環境搭建后新建AVD沒有可選target
  9. 【干货推荐】Android市场今非昔比,Android
  10. Android处理图片OOM的若干方法小结