android之查看SDCard容量

如图所示,通过progressBar来展示当前的sdcard容量。

代码:

activity代码:

package cn.com.chenzheng_java; import java.io.File; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.os.StatFs; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; public class SDCardActivity extends Activity implements OnClickListener { String result = "SDCard容量相关信息:/n"; ProgressBar progressBar ; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sdcard); progressBar = (ProgressBar) findViewById(R.id.progressBar_sdcard); button = (Button) findViewById(R.id.button_sdcard); button.setOnClickListener(this); } private void showSDCardSize(){ progressBar.setProgress(0); File sdcard = Environment.getExternalStorageDirectory(); /** * 我们可以通过StatFs访问文件系统的空间容量等信息 */ StatFs statFs = new StatFs(sdcard.getPath()); /** * statFs.getBlockSize可以获取当前的文件系统中,一个block所占有的字节数 */ int blockSize = statFs.getBlockSize(); /** * statFs.getAvaliableBlocks方法可以返回尚未使用的block的数量 */ int avaliableBlocks = statFs.getAvailableBlocks(); /** * statFs.getBlockCount可以获取总的block数量 */ int totalBlocks = statFs.getBlockCount(); result+="/n 尚未被使用的空间大小:"+avaliableBlocks*blockSize+"byte"; result+="/n 总空间大小:"+totalBlocks*blockSize+"byte"; float a = (float)avaliableBlocks/totalBlocks; int b = Integer.valueOf(Float.valueOf(a*100).toString().substring(0,2)); progressBar.setProgress(90); Log.i("通知", result); Toast.makeText(this, b+" "+result, Toast.LENGTH_LONG).show(); } @Override public void onClick(View v) { showSDCardSize(); } }

sdcard.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <!-- progressBar设置为水平的长框而不是一直旋转的小圆圈,应该通过如下语句设置 style="?android:attr/progressBarStyleHorizontal" 或者 style="?android:progressBarStyleHorizontal" --> <ProgressBar android:id="@+id/progressBar_sdcard" android:progress="0" style="?android:progressBarStyleHorizontal" mce_style="?android:progressBarStyleHorizontal" android:max="100" android:layout_width="fill_parent" android:layout_height="wrap_content"></ProgressBar> <Button android:id="@+id/button_sdcard" android:layout_width="wrap_content" android:text="Button" android:layout_height="wrap_content"></Button> </LinearLayout>

其他的文件都为默认。

--------------------------------------------------------------------------------------------

这里,只要使用到了一个类android.os.StatFs,该类可以让我们访问文件系统的容量相关的信息。

主要方法有:

android之查看SDCard容量_第1张图片

你可能感兴趣的:(android,layout,float,byte,button,encoding)