进度条

进度条ProgressBar

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

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

style="?android:attr/progressBarStyleHorizontal"

b)通过样式资源

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

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

Android 高级UI组件_第1张图片
进度条实时显示

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、
Android 高级UI组件_第2张图片
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文件夹定义数据
Android 高级UI组件_第3张图片
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代码实现,可以参考“下拉列表框”中使用的方法

Android 高级UI组件_第4张图片
实现带有图片的列表视图,并在点击时,获取点击的值
首先创建布局,用于指定每个单选项布局
Android 高级UI组件_第5张图片
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. 没事抽空学——常用界面组件属性
  2. 边缘图片android布局属性详解
  3. Android缩放图片Bitmap、Drawable
  4. android studio 3.6.0 绑定视图新特性的方法
  5. Android - 组件工具箱(widget tool box)
  6. android 拖动图片/拖动浮动按钮
  7. android中的按钮以图片的方式显示_基础篇
  8. 详解Android读取本地图片和网络图片的方法
  9. android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android

随机推荐

  1. Android(安卓)C/C++ 开发.
  2. 实现自己的Camera
  3. Android之UI学习篇三:TextVeiw单击文字链
  4. Android(安卓)中如何选择 compileSdkVers
  5. android permission权限与安全机制解析(下
  6. Android构建过程简述
  7. android eclipse 环境
  8. Android4.0:统一标准强行安装默认主题Holo
  9. Android培训班(8)
  10. Android(安卓)轻松实现语音识别