android中的小布局

简介: WebView、progress、GridView以及内存空间,这几个android小知识,希望会让我们对基础的知识有更好的回顾作用! (如有不对还希望小伙伴们帮忙指出---- 本人邮箱:893239524@qq.com)

一:对于android开发中需要加载网页


  1.首先在layout布局文件中加载

<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>


  2.在清单文件加入网络访问权限(写在application之外)

<!--访问网络权限-->
<uses-permission android:name="android.permission.INTERNET"/>


  3.mainActivity中实现

     (1)可以先静态绑定一个网址如: private String url="http://www.baidu.com";

     (2)通过findVIewById找到WebView对象,View.loadUrl(url);//加载外部网页 

若需要在本应用界面而不是跳转到第三方浏览器去显示网页操作如下:

//覆盖webView默认通过第三方或者是系统浏览器打开网页的行为。使得网页可以在webView中打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值为true时控制网页在webViewh中打开,如果falseze通过第三方或者是系统浏览器打开网页
//return super.shouldOverrideUrlLoading(view, url);
view.loadUrl(url);
return true;
}
//webViewClient帮助webView去处理一些页面控制和请求通知
});


   (3)可以启用javaScrip

webView;
true;//支持javaScrip

//webView加载页面使用优先缓存加载

//是否需要进行缓存

settings.setCacheMode(WebSettings. LOAD_CACHE_ELSE_NETWORK ) ; //缓存
//settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不缓存


  (4)可以对网页进度进行实时监控,用对话框进度条

webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//newProgress是1到100的整数,课做为精度

if(newProgress==100){ //加载完成 (用自定义函数)关闭progressDialog
closeDialog();
}else{//加载中(用自定义函数) 打开progressDialog
openDialog(newProgress);
}
super.onProgressChanged(view, newProgress);
}
});


private void openDialog(int newProgress) {
if(proDialog==null) {
proDialog = new ProgressDialog(MainActivity.this);//创建进度条对话框对象
proDialog.setTitle("加载中...");
proDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
proDialog.setProgress(newProgress);
proDialog.setIndeterminate(false);
proDialog.show();
}else{
proDialog.setProgress(newProgress);
}

}

private void closeDialog() {
if(proDialog!=null&&proDialog.isShowing()){
proDialog.dismiss();
proDialog=null;
}
}


   (5)当需要在点击手机物理返回键时不会退出应用,需要修改返回键


//改写手机物理逻按键返回的逻辑
public boolean onKeyDown(int keyCode, KeyEvent event){
//可以获得当前网址
//Toast.makeText(MainActivity.this,webView.getUrl(),Toast.LENGTH_SHORT).show();
if(keyCode==KeyEvent.KEYCODE_BACK){//点击手机返回键
if(webView.canGoBack()){ //判断是否可以返回
webView.goBack();//返回上衣界面
return true;
}
}
else{
System.exit(0);//退出程序
}
return super.onKeyDown(keyCode,event);
}




二.对于进度条的使用:


  1.首先在layout布局文件中进行加载ProgressBar


<ProgressBar

        style="?android:attr/progressBarStyleSmall"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/progressBar"

        android:layout_alignParentLeft="true"

        android:layout_alignParentStart="true" />


  (1)style="?android:attr/progressBarStyleSmall"  //表示圆环小型进度条

  (2)当不写style时默认是圆环正常大小的

   (3)style="?android:attr/progressBarStyleLarge"   //圆环大型

  (4)style="@android:style/Widget.ProgressBar.Horizontal"  //条形横向


   2.可以在onCreat方法的SetContentView之前设置:(好像现在可以不用)

//启动窗口特征,启动带进度和不带进度的
requestWindowFeature(Window.FEATURE_PROGRESS);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);


  3.给进度条textView显示进度

int first=progress.getProgress();  //获取第一进度
int second=progress.getSecondaryProgress(); //获取第二进度
int max =progress.getMax(); //获取最大进度
teextView.setText(""+(int)(first/(float)max*100)+"%"+" "+(int)(second/(float)max*100)+"%");


   4.也可以用对话框进度条  ProgressDialog对象 (.java文件中实现)


//1.新建progressDialog对象     对话框进度条

  proDialog=new ProgressDialog(MainActivity.this);


  //2.设置风格为横向

   proDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);


 //3.设置标题

  proDialog.setTitle("java工作室!");


 //设置显示文本

 proDialog.setMessage("欢迎来到中国");


 //设置图标

 proDialog.setIcon(R.drawable.img_8);


 /*

设置进度条属性

*/

//设置最大进度

proDialog.setMax((int)totalspace);

 //设置初始化已经增长的进度

proDialog.incrementProgressBy((int)usablespace);

 //设置进度条是明确显示进度的


progress.setIndeterminate(false);  //显示进度


//设置一个确定俺按钮在对话框上。(需要时Activity继承 onclick)

proDialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定",new DialogInterface.OnClickListener(){

@Override

public void onClick(DialogInterface dialogInterface, int i) {

Toast.makeText(MainActivity.this,"欢迎来到数据库工作室",Toast.LENGTH_SHORT).show();

 }

});

//是否可以通过放回按钮退出对话框

proDialog.setCancelable(true);

//显示ProgressDialog

proDialog.show();  //一定记得show 出来,否则不会有对话框



三.对手机内存空间的获取


//获得Sdcard的总和可用空间
File file= Environment.getExternalStorageDirectory();
long totalspace=file.getTotalSpace();
long usablespace=file.getUsableSpace();
//转化数据类型
String formatTotalSpace= Formatter.formatFileSize(this,totalspace);
String formatusablespace=Formatter.formatFileSize(this,usablespace);




四.GriView视图界面的使用

a78d778aa596ccd014196d5478afdabf55a117ba


   (1)首先在主布局中加载GriView


<GridView
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:numColumns="3"

android:id="@+id/gridView" />

<!--
android:horizontalSpacing="" 两列之间的间距
android:verticalSpacing="" 两行之间的间距
android:numColumns="" 每一行显示几列 auto_fit表示自动适配
-->


   (2)再新创建一个布局文件 item.xml

在当中添加控件  <ImageView/> 和<TextView/>


   (3)在MainActivity中加载SimpleAdapter 适配器

主要步骤:

/*
1. 准备数据
2, 新建适配器(simpleadapter)
3.GriView加载适配器
4.GriView 适配事件监听器(OnIte吗ClickListener)
*/

适配器:
private GridView gridView;
private List<Map<String,Object>> dataList;
private SimpleAdapter adapter;


创建资源:

//icon存放图片  图片的id都是int型
private int [] icon={R.drawable.img_1,....};
//存放字
private String [] iconName={"通讯录","课堂",......};


gridViewgridView;
dataListnew ,;
adapternew this,,item,
new "image","text",new intimageView,textView;

gridViewadapter;//夹加载适配器

gridViewthis;


//数据包装

public List<Map<String ,Object>> getDataList(){

for (int i=0;i<icon.length;i++) {
Map<String ,Object> map=new HashMap<String ,Object>();
map.put("image",icon[i]);
map.put("text",iconName[i]);
dataList.add(map);
}
return dataList;
}


//点击事件:

 

public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

//i代表iconName中的位置从0开始的 (long l)表示id 从0开始


Toast. makeText( this, "我是"+ iconName[i] + " "+l , Toast. LENGTH_SHORT).show() ;
}




目录
相关文章
|
8月前
|
XML 前端开发 Android开发
Android XML 布局基础(四)内外边距(margin、padding)
Android XML 布局基础(四)内外边距(margin、padding)
169 0
|
8月前
|
编解码 Android开发
Android 常用布局单位区别(dp、sp、px、pt、in、mm)
Android 常用布局单位区别(dp、sp、px、pt、in、mm)
301 0
|
4月前
|
Android开发
Android Studio入门之常用布局的讲解以及实战(附源码 超详细必看)(包括线性布局、权重布局、相对布局、网格布局、滚动视图 )
Android Studio入门之常用布局的讲解以及实战(附源码 超详细必看)(包括线性布局、权重布局、相对布局、网格布局、滚动视图 )
128 0
|
4月前
|
Android开发 容器
Android开发,学习LinearLayout布局
Android开发,学习LinearLayout布局
39 0
|
4月前
|
XML Java Android开发
Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
39 0
|
4月前
|
XML Java Android开发
Android Studio App开发中工具栏Toolbar、溢出菜单OverflowMenu、标签布局TabLayout的讲解及实战(实现京东App的标签导航栏,附源码)
Android Studio App开发中工具栏Toolbar、溢出菜单OverflowMenu、标签布局TabLayout的讲解及实战(实现京东App的标签导航栏,附源码)
58 0
|
4月前
|
Android开发 容器
Android开发第二次课 布局方式
Android开发第二次课 布局方式
23 0
|
6月前
|
XML 前端开发 Android开发
android 前端常用布局文件升级总结(一)
android 前端常用布局文件升级总结(一)
|
8月前
|
Android开发
Android 使用DataBinding时 将布局页面转换为数据绑定布局(Convert to data binding layout) 不出现提示解决办法
Android 使用DataBinding时 将布局页面转换为数据绑定布局(Convert to data binding layout) 不出现提示解决办法
90 0
|
8月前
|
Android开发
Android 实现布局的缩小和再放大动画(使用scale动画效果进行实现)
Android 实现布局的缩小和再放大动画(使用scale动画效果进行实现)
580 0