进度条

进度条ProgressBar

android:max=“100” 最大进度如100
android:progress="50"当前进度

设置进度条样式
a)通过主题方式

style="?android:attr/progressBarStyleHorizontal"

b)通过样式资源

style="@android:style/Widget.ProgressBar.Horizontal"

实时显示
首先开一个单独的进程,循环监控耗时操作的进度,并实时更新进度条的进度setProgress(),如果完成了,通过setVisibility()方法设置进度条不显示


进度条实时显示

public class MainActivity extends AppCompatActivity {private  ProgressBar bar;private int mProgress = 0;private Handler mHandler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setContentView(R.layout.activity_main);        bar = (ProgressBar) findViewById(R.id.bar1);        mHandler = new Handler(){//通过匿名内部类实例化Handler,Android在运行时,不允许更新主界面组件,通过Handler发送消息解决            @Override            public void handleMessage(@NonNull Message msg) {//重写handleMessage方法                if (msg.what == 0x111){                    bar.setProgress(mProgress);                }else {                    Toast.makeText(MainActivity.this,"完成",Toast.LENGTH_LONG).show();                    bar.setVisibility(View.GONE);                }            }        };        new Thread(new Runnable() {//线程            @Override            public void run() {                while(true)                {                    mProgress = doWork();                    Message m = new Message();//实例化消息对象                    if(mProgress < 100)                    {                        m.what = 0x111;//消息                        mHandler.sendMessage(m);//发送消息                    }else                    {                        m.what = 0x110;                        mHandler.sendMessage(m);                        break;                    }                }            }            private  int doWork(){                mProgress += Math.random()*10;                try {                    Thread.sleep(200);                } catch (InterruptedException e) {                    e.printStackTrace();                }                return mProgress;            }        }).start();//开启线程    }}

拖动条SeekBar

android:max="10"//设置最大值android:progress="5"//设置当前值android:thumb="@mipmap/ic_launcher_round"/>//设置图标

.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()//change监听器

sbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {//进度改变时触发
img.setImageAlpha(progress);//改变图片的透明度
}

星级评分条RatingBar

设置星星的多少
android:numStars=“5”

默认点亮星星
android:rating=“2”

每次可以选择的星星
android:stepSize=“1”

星星不能改变,只用于显示
android:isIndicator=“true”

获取星星的数量
String rating = String.valueOf(rbar.getRating());//获取星星的数量,并类型转换

图像视图ImageView

图片不进行等比例缩放
android:scaleType=“fitXY”

是否调整图片的宽度
android:adjustViewBounds=“true”

设置最大值,可以包裹
android:maxWidth=“100dp”
android:maxHeight=“100dp”

设置图片的颜色
android:tint="#aaff00"

图像切换器ImageSwitcher

实现手机相册功能

public class MainActivity extends AppCompatActivity {    private int[] arrayPic = new int[]{R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5,R.mipmap.img6,R.mipmap.img7};    ImageSwitcher imageSwitcher;    private int index;    private float touchDownX,touchUpX;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageSwitcher = findViewById(R.id.imgs);        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {//指定视图工厂            @Override            public View makeView() {//指定图片资源                ImageView imgv = new ImageView(MainActivity.this);                imgv.setImageResource(arrayPic[index]);                return imgv;            }        });        imageSwitcher.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if(event.getAction() == MotionEvent.ACTION_DOWN)                {                    touchDownX = event.getX();                    return true;                }else if(event.getAction() == MotionEvent.ACTION_UP)                {                    touchUpX = event.getX();                    if (touchUpX - touchDownX > 100){//左向右滑动                        index = index==0?arrayPic.length-1:index-1;                        //imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.)); 设置动画资源                        imageSwitcher.setImageResource(arrayPic[index]);                    }else if(touchDownX - touchUpX > 100)                    {                        index = index==arrayPic.length-1?0:index+1;                        imageSwitcher.setImageResource(arrayPic[index]);                    }                    return true;                }                return false;            }        });    }}

网格视图GridView
数据源需要通过Adapter 将数据显示在GridView
适配器分为4类:
ArrayAdapter 数组适配器
SimpleAdapter 简单适配器
SmipleCursorAdapter
BaseAdapter

设置网格视图的列数
android:numColumns=“3”

首先编写布局文件,用于设置单个单元格的布局 ImageView cell.xml

定义数组
定义maplist 放置图片资源
创建Adapter
设置Adapter
1、

2、

public class MainActivity extends AppCompatActivity {    private  int[] pic = new int[] {R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5,R.mipmap.ic_launcher};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        GridView gv = (GridView)findViewById(R.id.gv);        List> listitem = new ArrayList>();        for (int i = 0;i map = new HashMap();//定义map对象            map.put("image",pic[i]);//将图片添加到map中            listitem.add(map);//将map添加到list中        }        //参数:上下文对象,list对象,布局文件控制图片显示,字符串数组指定map中的key,整形数组指定布局文件中组件id        SimpleAdapter simpleAdapter = new SimpleAdapter(this,listitem,R.layout.cell,new String[]{"image"},new int[]{R.id.image});        gv.setAdapter(simpleAdapter);    }}

下拉列表框

1、首先在value文件夹定义数据

2、在activity_main中调用value

android:entries="@array/ctype"

上面两步也可以用代码实现,通过适配器

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        String[] ctype = new String[]{"项目3","项目4"};        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,ctype);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        Spinner spinner = (Spinner) findViewById(R.id.sp);        spinner.setAdapter(adapter);    }}

3、获取选取值

String str = spinner.getSelectedItem().toString();

列表视图ListView

以垂直类别的形式,列出要选择的项,可以带有图片

设置列表内容可以参考“下拉列表框”的1、2步骤

也可以通过JAVA代码实现,可以参考“下拉列表框”中使用的方法


实现带有图片的列表视图,并在点击时,获取点击的值
首先创建布局,用于指定每个单选项布局

JAVA代码

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        int[] imgid = new int[]{R.mipmap.img1,R.mipmap.img2,R.mipmap.img3};        String[] title = new String[]{"图片1","图片2","图片3"};        List> listitem = new ArrayList>();        for (int i = 0; i < imgid.length; i++) {            Map map = new HashMap();            map.put("image",imgid[i]);            map.put("name",title[i]);            listitem.add(map);        }        SimpleAdapter adapter = new SimpleAdapter(this,listitem,R.layout.main,new String[]{"name","image"},new int[]{R.id.txt,R.id.img});        ListView listView = (ListView) findViewById(R.id.lv);        listView.setAdapter(adapter);        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Map map = (Map) parent.getItemAtPosition(position);                Toast.makeText(MainActivity.this,map.get("name").toString(),Toast.LENGTH_SHORT).show();            }        });

滚动视图ScrollView

对于页面上没有显示的内容,可以拖动滚动条

选项卡

四个步骤:
1、在布局文件中添加TabHost、TabWidget和TabContent组件
2、编写个标签页的XML文件
3、获取并初始化TabHost组件
4、为TabHost对象添加标签页

更多相关文章

  1. Android(安卓)Studio安装完后,遇到了sdk manager无法更新问题
  2. Windows环境下Android(安卓)Studio系列3—简单设置
  3. androidUI设计之旅 ----布局文件属性解析
  4. Android平台常见属性集合
  5. Android(安卓)UI布局中设置了fill_parenet仍然没有全屏的解决办
  6. Android缩放图片Bitmap、Drawable
  7. Android(安卓)Studio 初体验
  8. android shape的使用
  9. android studio 3.6.0 绑定视图新特性的方法

随机推荐

  1. Android多分辨率适配框架(3)— 使用指南
  2. android设置背景色为透明
  3. Android(安卓)Linux 内核介绍 (转)
  4. Android的selector,背景选择器
  5. Android应用程序的构造块分析
  6. Android之NDK开发
  7. 【转】Android(安卓)技术-- 图形系统详解
  8. (4.1.23)Android(安卓)Animation学习笔记
  9. Android节拍器&定时程序
  10. android中九宫图整齐排列(图片处理)