进度条
进度条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<Map<String,Object>> listitem = new ArrayList<Map<String, Object>>();
for (int i = 0;i<pic.length;i++)
{
Map<String,Object> map = new HashMap<String ,Object>();//定义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<String> adapter = new ArrayAdapter<String>(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<Map<String,Object>> listitem = new ArrayList<Map<String,Object>>();
for (int i = 0; i < imgid.length; i++) {
Map<String,Object> map = new HashMap<String, Object>();
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<String,Object> map = (Map<String, Object>) 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对象添加标签页