Android 控件:ImageView、ProgressBar、AlertDialog、ProgressDialog

来源:互联网 发布:男内裤 知乎 编辑:程序博客网 时间:2024/06/01 07:14
1、ImageView就是一个图片显示控件这个我就不记了,里面的难点恐怕就是获取src吧,这点我在【Android代码库】笔记目录已经记录了。

2、ProgressBar 这个是一个进度条控件,它有多种style,下面是它的style名称。
AndroidProgressBar样式:
style="?android:attr/progressBarStyleHorizontal" 长形进度条
style="?android:attr/progressBarStyleLarge" 超大号圆形ProgressBar
style="?android:attr/progressBarStyleSmall" 小号圆形ProgressBar
style="?android:attr/progressBarStyleSmallTitle" 标题型圆形ProgressBar
3、AlertDialog 这个是一个提示框控件,可以在这个控件上定制一些按钮,并且可以在这些按钮上加事件,这个和javascript上的询问框差不多,后面的代码用这个做了一个“检查是否有最新版”的功能,可以让用户选择是否下载。4、ProgressDialog 这个控件从名字上就可以看得出和上面的进度条控件有关系,其实就是AlertDialog控件多了一个进度条控件功能而已,下面的代码用这个控件进行模拟“下载软件”的功能,具体可以参考.下面的代码将演示 1、ImageView控件的图片点击切换2、ProgressBar控件的显示隐藏并且加载进度3、AlertDialog控件的询问框4、ProgressDialog 带有进度条的提示框
 
package com.example.uiwidget;
 
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
 
public class MainActivity extends ActionBarActivity {
 
private ImageView logo;
private ProgressBar progressBar;
private ProgressDialog progressDialog;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
// 点击图片,切换图片效果
logo = (ImageView) findViewById(R.id.logo);
logo.setOnClickListener(new View.OnClickListener() {
 
@Override
public void onClick(View arg0) {
 
// TODO Auto-generated method stub
if (logo.getDrawable()
.getConstantState()
.equals(getResources().getDrawable(R.drawable.apple)
.getConstantState())) {
logo.setImageResource(R.drawable.ic_launcher);
} else {
logo.setImageResource(R.drawable.apple);
}
 
}
});
 
// ProgressBar 进度条
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
 
Button ShowHideProgressBar = (Button) findViewById(R.id.ShowHideProgressBar);
ShowHideProgressBar.setOnClickListener(new View.OnClickListener() {
 
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (progressBar.getVisibility() == View.GONE) {
progressBar.setVisibility(View.VISIBLE);
} else {
// 进度条递增加载
int progress = progressBar.getProgress();
progress = progress + 10;
progressBar.setProgress(progress);
progressBar.setVisibility(View.GONE);
}
}
});
 
//检查更新
onCheckUpdate();
 
}
 
// 检查更新
private void onCheckUpdate() {
 
// AlertDialog控件 询问框
 
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
 
dialog.setTitle("发现新版本");
 
dialog.setMessage("更新内容:" + "\n 1、修复附近的人的bug" + "\n 2、增加了个人信息修改功能");
dialog.setCancelable(false);
dialog.setPositiveButton("确认更新", new DialogInterface.OnClickListener() {
 
@Override
public void onClick(DialogInterface arg0, int arg1) {
 
// TODO Auto-generated method stub
onDownLoad();
}
});
 
dialog.setNegativeButton("稍后更新", new DialogInterface.OnClickListener() {
 
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
// Toast.makeText(getApplicationContext(), "", 1).show();
}
});
 
dialog.show();
}
 
// 开始下载更新
private void onDownLoad() {
 
// Progress控件 带有进度条的dialog
progressDialog = new ProgressDialog(MainActivity.this);
 
// progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//
// 设置进度条的形式为圆形转动的进度条
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 长形进度条
progressDialog.setTitle("开始下载");
progressDialog.setMessage("loading...");
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条
 
// 如果此处设置为false则不能用back键进行取消的,必须要在代码中设置,
// 当加载完后,则调用 progressDialog.dismiss(); 进行关闭,否则ProgressDialog会一直存在.
progressDialog.setCancelable(true);
progressDialog.show();
 
// 初始化10进度
/*
* int progress = progressDialog.getProgress();
* progress = progress +10;
* progressDialog.setProgress(progress);
*/
 
// 采用线程方式来更新进度条
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int i = 0;
while (i < 100) {
try {
 
Thread.sleep(100);
// 更新进度条的进度,可以在子线程中更新进度条进度 ,每次加1
progressDialog.incrementProgressBy(1);
// dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式
i++;
 
} catch (Exception e) {
// TODO: handle exception
}
}
// 在进度条走完时删除Dialog
progressDialog.dismiss();
 
}
}).start();
 
}
 
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
 
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
 

0 0