### 1、ProgressBar
(1)屬性:
? ? ? ? android:max="100" ? ; ?——最大顯示進度
? ? ? ? android:progress="50" ?; ?——第一顯示進度
? ? ? ? android:secondaryProgress="80" ?; ?——第二顯示進度
? ? ? ? android:indeterminate="true" ? ; ?——設置是否精確顯示(true表示不精確顯示)
(2)方法:
? ? ? ? setProgress(int) ; ——設置第一進度
? ? ? ? setSecondaryProgress(int) ?; ——設置第二進度
? ? ? ? getProgress( ) ; ——獲取第一進度
? ? ? ? getSecondaryProgress( ) ?; ?——獲取第二進度
? ? ? ? incrementProgressBy( int ) ?; ?——增加或者減少第一進度
? ? ? ? incrementSecondaryProgressBy (int ) ?; ——增加或者減少第二進度
? ? ? ? getMax( ) ?:獲取最大進度
(3)在標題欄上上設置
~~~
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//啟用窗口特征,啟用帶進度和不帶進度的進度條
requestWindowFeature(Window.FEATURE_PROGRESS);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
//顯示兩種進度條
setProgressBarVisibility(true);
setProgressBarIndeterminateVisibility(true);
//MAX=10000
setProgress(6000);
}
~~~
(4)對話框式進度條
~~~
btnDia=(Button) findViewById(R.id.btnDia);
btnDia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*設置頁面顯示風格*/
//新建ProgressDialog對象
progressDialog=new ProgressDialog(MainActivity.this);
//設置顯示風格(橫向)
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//設置標題
progressDialog.setTitle("對話框式進度條");
//設置圖標
progressDialog.setIcon(R.drawable.ic_launcher);
//設置對話框里的文字信息
progressDialog.setMessage("歡迎你!");
//設置"確定"按鈕
progressDialog.setButton(DialogInterface.BUTTON_POSITIVE,"確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "這是對話框式進度條!", Toast.LENGTH_LONG).show();
}
});
//設置是否通過返回按鈕退出對話框
progressDialog.setCancelable(true);
/*設置關于ProgressBar的屬性*/
//設置最大進度
progressDialog.setMax(100);
//設置初始化已經增長到的進度
progressDialog.incrementProgressBy(20);
//進度條是明確顯示進度的
progressDialog.setIndeterminate(false);
//顯示對話框
progressDialog.show();
}
});
~~~
(5)自定義ProgressBar
~~~
style="@android:style/Widget.ProgressBar.Horizontal" //Ctrl+左鍵 查看
<style name="Widget.ProgressBar.Horizontal">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
<item name="android:minHeight">20dip</item>
<item name="android:maxHeight">20dip</item>
<item name="android:mirrorForRtl">true</item>
</style>
//繼續查看@android:drawable
~~~
新建一個自己的progress_horizontal.xml文件,去覆蓋系統的。(復制原來的,在原來的基礎上進行修改)然后在ProgressBar屬性中添加:
~~~
android:progressDrawable="@drawable/progress_horizontal"
~~~
### 2、WebView顯示網頁
(引言:可以通過Intent調用系統瀏覽器,直接實現跳轉)
(1)權限:? ? <uses-permission android:name="android.permission.INTERNET"/>
(2)加載:A.本地文件:webView.loadUrl( "file:///android_asset/example.html") ? ? ? //本地文件存放在assets目錄下
B.加載Web資源:webView.loadUrl("http://www.baidu.com") ? ??
C.覆蓋WebView默認通過第三方或者系統瀏覽器打開網頁的行為,使得網頁可以在WebView中打開
~~~
webView.setWebViewClient(new WebViewClient(){ //WebViewClient幫助WebView去處理一些頁面控制和請求通知
......
return true
......
});
~~~
D.獲得當前WebView的URL:webView.getUrl( );
(3)在WebView中使用Javascript
~~~
WebSettings webSettings = webView.getSettings(); //獲取WebSettings的值
webSettings.setJavaScriptEnabled(true); //啟用JavaScript
~~~
(4)改寫物理按鍵——返回的邏輯

(5)

(6)WebView緩存的運用
A.優先使用緩存:webView.getSettings( ).setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
B. 不使用緩存 ? :webView.getSettings( ).setCacheMode(WebSettings.LOAD_NO_CACHE);
### 3、Fragment——主要目的是用在大屏幕設備上,支持更加動態和靈活的UI設計。
Fragment在應用中應當是一個模塊化和可重用的組件,因為Fragment定義了自己的布局,以及通過使用它自己的生命周期回調方法定義了它自己的行為,所以可以將Fragment包含到多個Activity中。
(1)Fragment可以作為Activity界面的一部分組成出現;可以在一個Activity中同時出現多個Fragment,并且一個Fragment也可以在多個Activity中使用;在Activity運行過程中,可以添加、移除或者替換Fragment;Fragment可以相應自己的輸入事件,并且有自己的聲明周期,它們的生命周期會受宿主Activity的生命周期的影響。
(2)靜態加載——在Activity的Layout文件中聲明Fragment
A.android:name屬性:指定了在layout中實例化的Fragment類
B.android:id屬性:提供了一個唯一ID 來標識
C.android:tag屬性:提供了一個唯一的字符串 來標識
(3)動態加載——撰寫代碼將Fragment添加到一個Activity
layout中(處理Fragment事務)
A.開啟事務:FragmentManager fragmentManager =
getFragmentManager();?
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
B.執行的操作:add(); ?remove(); ?replace(); ?addToBackStack(); ?commit(); ?
(4)聲明周期:
A.?onCreateView:每次創建都會繪制Fragment的View組件時回調該方法
B.?onAttach:當Fragment被添加到Activity時候會回調這個方法,并且只調用一次
C.?onCreate:創建Fragment時會回調,只會調用一次
D.?onActivityCreated:當Fragment所在的Activty啟動完成后調用
E.?onStart:啟動Fragment
F.?onResume:恢復Fragment時會被回調,調用onStart()方法后面一定會調用onResume()方法
G.?onPause:暫停Fragment
H.?onStop:停止Fragment
I. ?onDestroyView:銷毀Fragment所包含的View組件時
J.?onDestroy:銷毀Fragment時會被回調
K.?onDetach:Fragment從Activity中刪除時會回調該方法,并且這個方法只會調用一次
(5)與Activity傳值通信:
A. Fragment調用getActivity()方法獲取它所在的Activity;
Activity調用FragmentManager的findFragmentById()或者findFragmentByTag()方法獲取Fragment;
B. Activity——》Fragment:在Activity中創建Bundle數據包,并調用Fragment的setArguments(Bundle bundle)方法;
Fragment——》Activity:需要在Fragment中定義一個內部回調接口,讓包含該Fragment的Activity實現該回調接口。這樣Fragment可調用回調方法將數據傳遞給Activity。
### 4、ViewPager使視圖左右滑動(類似微信界面)
(1)加載顯示的頁卡:
A. layoutInflater if = getLayoutInflater().from(this);
if.inflate(resource,root);
B. View.inflate(context,resource,root);
(2)配置Adapter:
A. PagerAdapter ? 數據源:List<View>;
B. FragmentPagerAdapter ? 數據源:List<Fragment>;
C.?FragmentStatePagerAdapter ? 數據源:List<Fragment>;
(3)監聽器
OnPageChangeListener
簡單粘一下實現代碼:
~~~
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagerTab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top" >
</android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
~~~
數據適配器:
~~~
public class MyPagerAdapter extends PagerAdapter {
private List<View> viewList;
private List<String> titleList;
public MyPagerAdapter(List<View> viewList, List<String> titleList) {
this.viewList = viewList;
this.titleList = titleList;
}
// 返回的是頁卡的數量
@Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
}
// View是否來自與對象
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
// 實例化一個頁卡
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
// 銷毀頁卡
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
//設置ViewPager頁卡的標題
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}
}
~~~
MainActivity :
~~~
public class MainActivity extends Activity {
private List<View> viewList;
private ViewPager viewPager;
private List<String> titleList;
private PagerTabStrip tabStrip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewList=new ArrayList<View>();
//通過View對象作為ViewPager的數據源
View view1=View.inflate(this, R.layout.view1, null);
View view2=View.inflate(this, R.layout.view2, null);
View view3=View.inflate(this, R.layout.view3, null);
View view4=View.inflate(this, R.layout.view4, null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
//初始化ViewPager
viewPager=(ViewPager) findViewById(R.id.pager);
//為ViewPager設置標題
titleList=new ArrayList<String>();
titleList.add("第一頁");
titleList.add("第二頁");
titleList.add("第三頁");
titleList.add("第四頁");
//為PagerTabStrip設置一些屬性
tabStrip=(PagerTabStrip) findViewById(R.id.pagerTab);
tabStrip.setBackgroundColor(Color.BLUE);
tabStrip.setTextColor(Color.RED);
tabStrip.setDrawFullUnderline(false);
tabStrip.setTabIndicatorColor(Color.GREEN);
//創建PagerAdapter的適配器
MyPagerAdapter adapter=new MyPagerAdapter(viewList,titleList);
//ViewPager加載適配器
viewPager.setAdapter(adapter);
}
@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;
}
}
~~~
- 前言
- Java內部類
- 從一個View向一個Activity跳轉
- Android 與 SQLite
- Android工程A依賴B,B依賴C
- Android重要控件概覽(上)
- Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- Android布局概覽
- 動態引用APK文件
- Android重要控件概覽(中)
- Android重要控件概覽(下)
- Gallery和ImageSwitcher
- Android之Toast
- Android之Dialog
- Android之Notification
- Android之Menu
- Android Menu中android:showAsAction屬性
- Android SharedPreferences存儲數據的使用方法
- Android手勢識別之GestureDetector
- 不同APP通過SharedPreferences傳遞數據(共享數據)
- 一個自定義的Topbar模板
- 關于Activity回收造成View選中不對應的問題
- Android之Fragment靜態加載