編輯:關於Android編程
作用:當應在後台執行時,前台界面不會有任何信息,這時用戶根本不知道程序是否在執行,以及執
行進度等,因些需要使用進度條來提示程序執行的進度.在Android中進度條使用ProgressBar表
示.用於身用戶顯示某個耗時操作完成的百分比。
常用屬性:
1. android:max 設置進度條的最大值
2. android:progress 用於指定進度條的已完成的進度值
3. android:progressDrawable 用於設置進度條的軌道繪制形式
對應get與set方法
Max:最大進度
setProgress()設置當前的進度,必須手動在代碼中設置
做了UI處理,可以直接在UI子線程中處理

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ProgressBar pb = (ProgressBar) findViewById(R.id.pb1);
final TextView tv = (TextView) findViewById(R.id.tv);
pb.setMax(200);
pb.setProgress(0);
new Thread() {
public void run() {
// 模擬耗時任務
int index = 0;
while (index++ < 200) {
try {
Thread.sleep((int) (Math.random() * 200));
} catch (InterruptedException e) {
e.printStackTrace();
}
// 修改值
// 做了UI的處理,所以直接可以再子線程中修改UI
pb.setProgress(index);
// 需要使用UI線程
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(pb.getProgress() + "/" + pb.getMax());
}
});
}
};
}.start();
}
}
//xml的配置
跟ProgressBar一樣,只是多了一個監聽的方法
setOnSeekBarChangeListener
重寫三個方法
onStopTrackingTouch(SeekBar seekBar)
拖拽完成後的方法
onStartTrackingTouch(SeekBar seekBar)
開始拖拽時,也就是用戶剛好點上去的方法
onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
每次進度改變都會調用,fromUser是用來判斷是否是用戶改變的進度
獲取系統服務
XXXManager manager = (XXXManager)Context.getSystemService(服務名稱);

/**
* 需要用他調節音量大小
*
* @author Administrator
*
*/
/**
* 所有操作系統的 都需要Service系統服務
*
* @author Administrator
*
*/
public class MainActivity extends Activity {
SeekBar seekBar;
TextView tv;
AudioManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekBar1);
tv = (TextView) findViewById(R.id.tv);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 拖拽完畢
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 開始拖拽時 用戶剛好點上去
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// 每次進度改變都會調用
// 是否是用戶改變的呢???
// if (fromUser) {
tv.setText(progress + "/" + seekBar.getMax());
// }
// 拖動進度條,我需要改變音量
// flags用來 需不需要聲音 是否需要ui
manager.setStreamVolume(AudioManager.STREAM_MUSIC, progress,
AudioManager.FLAG_SHOW_UI
| AudioManager.FLAG_PLAY_SOUND);
}
});
// seekBar.setMax(200);
// seekBar.setProgress(50);
// 獲取系統服務
// 獲取音頻管理器
manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// 獲取他的最大值 0-15
int max = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
seekBar.setMax(max);
// 本來就有一個聲量值
int volumn = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
Log.e("TAG", volumn + " ");
seekBar.setProgress(volumn);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// ++
seekBar.setProgress(seekBar.getProgress() + 1);
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
seekBar.setProgress(seekBar.getProgress() - 1);
}
return super.onKeyUp(keyCode, event);
}
}
//xml中的配置
只能鑲嵌一個View,一般鑲嵌布局
滑動事件 view.fullScroll(ScrollView.FOCUS_DOWN); 必須放在post或者
onWindowFocusChange中

ublic class MainActivity extends Activity {
ScrollView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = (ScrollView) findViewById(R.id.view);
// 滑動到指定位置
// 這個方法必須等待view完全顯示
// post 延遲操作
int width = view.getWidth();
Log.e("TAG", width + " ");
final long startTime = System.currentTimeMillis();
// view在這裡還並沒有在完成
view.post(new Runnable() {
@Override
public void run() {
int width = view.getWidth();
Log.e("TAG", width + " "
+ (System.currentTimeMillis() - startTime));
view.fullScroll(ScrollView.FOCUS_DOWN);
}
});
}
//
// @Override
// public void onWindowFocusChanged(boolean hasFocus) {
// super.onWindowFocusChanged(hasFocus);
// view.fullScroll(ScrollView.FOCUS_DOWN);
// }
}
//xml注意,必須把屏幕占滿
AutoCompleteTextView繼承與EditText,擁有EditText的所有屬性和方法。
常用屬性:
1. android:completionHint 用於彈出的下拉菜單指定提示標題
2. android:completionThreshold 用於指定用戶至少輸入幾個字符才會顯示提示
3. android:dropDownHeight 用於指定下拉菜單的高度
4. android:dropDownHorizontalOffset 用於指定下拉腰間與文本之間的水平偏移.下拉
腰間默認與文本左對齊
5. android:dropDownVerticalOffset 用於指定下拉腰間與文本之間的垂直領銜.下拉
菜單默認緊跟文本框
6. android:dropDownWidth 用於指定下拉菜單的寬度
7. android:popupBackground 用於為下拉菜單設置背景

public class MainActivity extends Activity {
// 數據源
String[] data = { "zhangsan", "lisi", "wangwu", "zhaoliu", "tianqi",
"wangba", "xiaojiujiu", "李四", "李五", "李六" };
AutoCompleteTextView actv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 顯示
actv = (AutoCompleteTextView) findViewById(R.id.actv);
// 適配器
ArrayAdapter adapter = new ArrayAdapter(this,
R.layout.item_actv, R.id.tv, data);
// 所有需要適配器的view
actv.setAdapter(adapter);
}
}
//主xml
//顯示樣式的xml
MultiAutoCompleteTextView 自動完成文本框
AutoCompleteTextView和MultiAutoCompleteTextView都需要通過適配器將數據綁定到組件上
MultiAutoCompleteTextView必須制定分隔符
setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer())
示例圖如下:

public class MainActivity extends Activity {
MultiAutoCompleteTextView mactv;
// 數據源
String[] data = { "zhangsan", "lisi", "wangwu", "zhaoliu", "tianqi",
"wangba", "xiaojiujiu", "李四" };
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mactv = (MultiAutoCompleteTextView) findViewById(R.id.mactv);
adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, data);
mactv.setAdapter(adapter);
// CommaTokenizer實現好了的 以逗號分隔
mactv.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
}
//xml中的配置
Android Vector曲折的兼容之路
兩年前寫書的時候,就在研究Android L提出的Vector,可研究下來發現,完全不具備兼容性,相信這也是它沒有被廣泛使用的一個原因,經過Google的不懈努力,現在V
android文件操作——讀取assets和raw文件下的內容
來自Resources和Assets 中的文件只可以讀取而不能進行寫的操作。assets文件夾裡面的文件都是保持原始的文件格式,需要用AssetManager以字節流的形
四大組件的工作過程探索(一)
四大組件的運行狀態: Android中的四大組件中除了BroadcastReceiver以外,其他三種組件都必須在Android Mainfrst中注冊。對於,Bro
微信換手機號了怎麼登陸 微信怎麼解除手機綁定
微信是一種重要的交通工具,我們每時每刻幾乎都在關注微信的信息,微信登陸時需要輸入手機號碼,當我們更換手機號碼了該怎麼驗證登陸呢?手機不在身邊怎麼使用另一部手