Android重要控件概览(中)
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=10000setProgress(6000);}(4)对话框式进度条
btnDia=(Button) findViewById(R.id.btnDia);btnDia.setOnClickListener(new View.OnClickListener() {@Overridepublic 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() {@Overridepublic 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)
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文件中声明FragmentA.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;}// 返回的是页卡的数量@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewList.size();}// View是否来自与对象@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}// 实例化一个页卡@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(viewList.get(position));return viewList.get(position);}// 销毁页卡@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(viewList.get(position));}//设置ViewPager页卡的标题@Overridepublic CharSequence getPageTitle(int position) {// TODO Auto-generated method stubreturn titleList.get(position);}}MainActivity :
public class MainActivity extends Activity {private List<View> viewList;private ViewPager viewPager;private List<String> titleList;private PagerTabStrip tabStrip;@Overrideprotected 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);//初始化ViewPagerviewPager=(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);}@Overridepublic 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;}}
更多相关文章
- Android启动过程
- 一些常用到的android前端布局属性
- Android(安卓)RecyclerView 设置显示滚动条属性后,滚动条不显示踩
- android xml控件属性
- 3.Spinner
- Android(安卓)8.1 zygote创建新应用进程
- Android(安卓)API中文文档EditText
- 】Android横竖屏总结
- Android(安卓)API中文文档ImageView