我的编程空间,编程开发者的网络收藏夹
学习永远不晚

android文件管理器用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

android文件管理器用法详解

很久没有写东西了,鉴于某某同学文件管理器不会,这里简单介绍一下,同时写一个demon,参考了网上别人写的代码,自己也学习学习,研究研究。

  首先所谓文件管理器,看起来就是一个列表,列表里面是文件夹或者文件,首先把布局写出来,我想在最上方的左边显示文件的路径,右边显示该路径下的文件个数,其实还是一个遍历文件,然后用列表显示出来的问题。下面是ListView,用来显示文件列表。下面是运行的效果图:

主界面的布局文件如下:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <RelativeLayout 
    android:id="@+id/top"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView 
      android:id="@+id/path"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
      android:layout_centerVertical="true"
      android:textSize="@*android:dimen/list_item_size"
      android:textColor="@android:color/white"/>
    <TextView 
      android:id="@+id/item_count"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textSize="@*android:dimen/list_item_size"
      android:textColor="@android:color/white"
      android:layout_alignParentRight="true"
      android:layout_centerVertical="true"/>
  </RelativeLayout>
  <View 
    android:layout_width="match_parent"
    android:layout_height="2dip"
    android:background="#09c"/>
  <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView 
      android:id="@+id/file_list"
      android:layout_height="match_parent"
      android:layout_width="match_parent"
      android:fadingEdge="none"
      android:cacheColorHint="@android:color/transparent"/>
  </LinearLayout>
</LinearLayout>

首先在oncreate方法里面调用一个方法去获取布局文件里面的id:


@Override
   protected void onCreate (Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.file_manager);
     initView();
 }

initView之后添加apk的权限,777 表示可读可写可操作。


private void initView() {
    mListView = (ListView) findViewById(R.id.file_list);
    mPathView = (TextView) findViewById(R.id.path);
    mItemCount = (TextView) findViewById(R.id.item_count);
    mListView.setOnItemClickListener(this);
    String apkRoot = "chmod 777 " + getPackageCodePath(); 
    RootCommand(apkRoot);
    File folder = new File("/");
    initData(folder);
  } 

修改Root权限的方法:


public static boolean RootCommand (String command) {
    Process process = null;
    DataOutputStream os = null;
    try {
      process = Runtime.getRuntime().exec("su");
      os = new DataOutputStream(process.getOutputStream());
      os.writeBytes(command + "\n");
      os.writeBytes("exit\n");
      os.flush();
      process.waitFor();
    }
    catch (Exception e) {
      return false;
    }
    finally {
      try {
        if (os != null) {
          os.close();
        }
        process.destroy();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
    }
    return true;
  }

完了之后我们要获取根目录下面的所有的数据,然后设置到我们的ListView中让它显示出来。


private void initData(File folder) {
    boolean isRoot = folder.getParent() == null; 
    mPathView.setText(folder.getAbsolutePath()); 
    ArrayList<File> files = new ArrayList<File>();  
    if (!isRoot) {
      files.add(folder.getParentFile()); 
    }
    File[] filterFiles = folder.listFiles(); 
    mItemCount.setText(filterFiles.length + "项"); 
    if (null != filterFiles && filterFiles.length > 0) {
      for (File file : filterFiles) {
        files.add(file);
      }
    }
    mFileAdpter = new FileListAdapter(this, files, isRoot); 
    mListView.setAdapter(mFileAdpter);
  }

首先是获取当前是否是根目录,然后把文件的路径设置给我们要显示的View。

然后用一个ArrayList来装我们目录下的所有的文件或者文件夹。

首先要把这个文件夹的父类装到我们的列表中去,然后把这个文件夹下的子文件都拿到,也装在列表中,然后调用Adapter显示出来。既然说到了Adapter, 那就看下Adapter吧。


private class FileListAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<File> files;
    private boolean isRoot;
    private LayoutInflater mInflater;
    public FileListAdapter (Context context, ArrayList<File> files, boolean isRoot) {
      this.context = context;
      this.files = files;
      this.isRoot = isRoot;
      mInflater = LayoutInflater.from(context);
    }
    @Override
    public int getCount () {
      return files.size();
    }
    @Override
    public Object getItem (int position) {
      return files.get(position);
    }
    @Override
    public long getItemId (int position) {
      return position;
    }
    @Override
    public View getView (int position, View convertView, ViewGroup parent) {
      ViewHolder viewHolder;
      if(convertView == null) {
        viewHolder = new ViewHolder();
        convertView = mInflater.inflate(R.layout.file_list_item, null);
        convertView.setTag(viewHolder);
        viewHolder.title = (TextView) convertView.findViewById(R.id.file_title);
        viewHolder.type = (TextView) convertView.findViewById(R.id.file_type);
        viewHolder.data = (TextView) convertView.findViewById(R.id.file_date);
        viewHolder.size = (TextView) convertView.findViewById(R.id.file_size);
      } else {
        viewHolder = (ViewHolder) convertView.getTag();
      }
      File file = (File) getItem(position);
      if(position == 0 && !isRoot) {
        viewHolder.title.setText("返回上一级");
        viewHolder.data.setVisibility(View.GONE);
        viewHolder.size.setVisibility(View.GONE);
        viewHolder.type.setVisibility(View.GONE);
      } else {
        String fileName = file.getName();
        viewHolder.title.setText(fileName);
        if(file.isDirectory()) {
          viewHolder.size.setText("文件夹");
          viewHolder.size.setTextColor(Color.RED);
          viewHolder.type.setVisibility(View.GONE);
          viewHolder.data.setVisibility(View.GONE);
        } else {
          long fileSize = file.length();
          if(fileSize > 1024*1024) {
            float size = fileSize /(1024f*1024f);
            viewHolder.size.setText(new DecimalFormat("#.00").format(size) + "MB");
          } else if(fileSize >= 1024) {
            float size = fileSize/1024;
            viewHolder.size.setText(new DecimalFormat("#.00").format(size) + "KB");
          } else {
            viewHolder.size.setText(fileSize + "B");
          }
          int dot = fileName.indexOf('.');
          if(dot > -1 && dot < (fileName.length() -1)) {
            viewHolder.type.setText(fileName.substring(dot + 1) + "文件");
          }
          viewHolder.data.setText(new SimpleDateFormat("yyyy/MM/dd HH:mm").format(file.lastModified()));
        }
      }
      return convertView;
    }
    class ViewHolder {
      private TextView title;
      private TextView type;
      private TextView data;
      private TextView size;
    }
  }

看下adapter的布局文件:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <TextView 
      android:id="@+id/file_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textSize="25sp"
      android:textColor="#fff000"/>
  <LinearLayout 
    android:id="@+id/file_info"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView 
      android:id="@+id/file_size"
      android:layout_width="0dip"
      android:layout_height="wrap_content"
      android:textColor="#ffffcc"
      android:layout_weight="1"
      android:textSize="18sp"/>
    <TextView 
      android:id="@+id/file_type"
      android:layout_width="0dip"
      android:layout_height="wrap_content"
      android:textColor="#ffffcc"
      android:layout_weight="1"
      android:gravity="right"
      android:textSize="18sp"/>
    <TextView 
      android:id="@+id/file_date"
      android:layout_width="0dip"
      android:layout_height="wrap_content"
      android:textColor="#ffffff"
      android:layout_weight="1"
      android:gravity="right"
      android:textSize="18sp"/>
  </LinearLayout>
</LinearLayout>

列表的Item项分2行显示,上面一行显示文件名

下面一行分别显示文件大小,文件类型,文件修改时间。

我们可以通过File file = (File) getItem(position);拿到Item项的文件,如果是在第一个并且不再根目录我们就把第一个也就是parentFile显示为:“返回上一级”,下一行的都隐藏掉。

如果不是第一个位置,可以拿到这个文件的一系列信息。

先把String fileName = file.getName();文件名拿到,显示出来。

如果这个文件是一个文件夹,就把文件的大小显示为“文件夹”,类型和修改时间隐藏掉。

如果不是一个文件夹, 可以拿到文件的长度long fileSize = file.length();

根据特定的长度显示文件的大小,B, KB, MB, GB等。

然后拿到文件的类型,通过最后一个“.”之后的字符串就是该文件的类型。

通过viewHolder.data.setText(new SimpleDateFormat("yyyy/MM/dd HH:mm").format(file.lastModified())); 设置文件的最近修改时间。

然后可以设置每个Item项的点击事件,如下所示:


@Override
  public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
    File file = (File) mFileAdpter.getItem(position);
    if(!file.canRead()) {
      new AlertDialog.Builder(this).setTitle("提示").setMessage("权限不足").setPositiveButton(android.R.string.ok, new OnClickListener() {
        @Override
        public void onClick (DialogInterface dialog, int which) {
        }
      }).show();
    } else if(file.isDirectory()) {
      initData(file);
    } else {
      openFile(file);
    }
  }

如果这个文件不能读,就弹出对话框显示“权限不足”。

如果是一个文件夹,就在调用一次显示所有文件的方法:initData(file);把这个文件夹作为参数传递下去。

如果是一个文件,就可以调用打开文件的方法打开这个文件。

如何打开文件呢?

可以根据不同的文件的后缀名找到不同的文件类型:

可以用一个二维数组把一些常用的文件类型封装起来。如下:


private final String[][] MIME_MapTable = {
    // {后缀名, MIME类型}
    { ".3gp", "video/3gpp" }, 
    { ".apk", "application/vnd.android.package-archive" }, 
    { ".asf", "video/x-ms-asf" }, 
    { ".avi", "video/x-msvideo" },
    { ".bin", "application/octet-stream" }, 
    { ".bmp", "image/bmp" }, 
    { ".c", "text/plain" }, 
    { ".class", "application/octet-stream" },
    { ".conf", "text/plain" }, 
    { ".cpp", "text/plain" }, 
    { ".doc", "application/msword" },
    { ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, 
    { ".xls", "application/vnd.ms-excel" },
    { ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, 
    { ".exe", "application/octet-stream" },
    { ".gif", "image/gif" }, 
    { ".gtar", "application/x-gtar" }, 
    { ".gz", "application/x-gzip" }, 
    { ".h", "text/plain" }, 
    { ".htm", "text/html" },
    { ".html", "text/html" }, 
    { ".jar", "application/java-archive" }, 
    { ".java", "text/plain" }, 
    { ".jpeg", "image/jpeg" },
    { ".jpg", "image/jpeg" }, 
    { ".js", "application/x-javascript" }, 
    { ".log", "text/plain" }, 
    { ".m3u", "audio/x-mpegurl" },
    { ".m4a", "audio/mp4a-latm" }, 
    { ".m4b", "audio/mp4a-latm" }, 
    { ".m4p", "audio/mp4a-latm" }, 
    { ".m4u", "video/vnd.mpegurl" },
    { ".m4v", "video/x-m4v" }, 
    { ".mov", "video/quicktime" }, 
    { ".mp2", "audio/x-mpeg" }, 
    { ".mp3", "audio/x-mpeg" }, 
    { ".mp4", "video/mp4" },
    { ".mpc", "application/vnd.mpohun.certificate" }, 
    { ".mpe", "video/mpeg" }, 
    { ".mpeg", "video/mpeg" }, 
    { ".mpg", "video/mpeg" },
    { ".mpg4", "video/mp4" }, 
    { ".mpga", "audio/mpeg" }, 
    { ".msg", "application/vnd.ms-outlook" }, 
    { ".ogg", "audio/ogg" },
    { ".pdf", "application/pdf" }, 
    { ".png", "image/png" }, 
    { ".pps", "application/vnd.ms-powerpoint" },
    { ".ppt", "application/vnd.ms-powerpoint" }, 
    { ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation" },
    { ".prop", "text/plain" }, 
    { ".rc", "text/plain" }, 
    { ".rmvb", "audio/x-pn-realaudio" }, 
    { ".rtf", "application/rtf" },
    { ".sh", "text/plain" }, 
    { ".tar", "application/x-tar" }, 
    { ".tgz", "application/x-compressed" }, 
    { ".txt", "text/plain" },
    { ".wav", "audio/x-wav" }, 
    { ".wma", "audio/x-ms-wma" }, 
    { ".wmv", "audio/x-ms-wmv" }, 
    { ".wps", "application/vnd.ms-works" },
    { ".xml", "text/plain" }, 
    { ".z", "application/x-compress" }, 
    { ".zip", "application/x-zip-compressed" }, 
    { "", "**";
    String fileName = file.getName();
    int dotIndex = fileName.indexOf('.');
    if(dotIndex < 0) {
      return type;
    }
    String end = fileName.substring(dotIndex, fileName.length()).toLowerCase();
    if(end == "") {
      return type;
    }
    for(int i=0; i<MIME_MapTable.length; i++) {
      if(end == MIME_MapTable[i][0]) {
        type = MIME_MapTable[i][1] ;
      }
    }
    return type;
  }

先遍历后缀名,如果找到,就把对应的类型找到并返回。

拿到了类型,就可以打开这个文件。

用这个intent.setDataAndType(Uri.fromFile(file), type); 打开设置打开文件的类型。

如果type是**"; String fileName = file.getName(); int dotIndex = fileName.indexOf('.'); if(dotIndex < 0) { return type; } String end = fileName.substring(dotIndex, fileName.length()).toLowerCase(); if(end == "") { return type; } for(int i=0; i<MIME_MapTable.length; i++) { if(end == MIME_MapTable[i][0]) { type = MIME_MapTable[i][1] ; } } return type; } private final String[][] MIME_MapTable = { // {后缀名, MIME类型} { ".3gp", "video/3gpp" }, { ".apk", "application/vnd.android.package-archive" }, { ".asf", "video/x-ms-asf" }, { ".avi", "video/x-msvideo" }, { ".bin", "application/octet-stream" }, { ".bmp", "image/bmp" }, { ".c", "text/plain" }, { ".class", "application/octet-stream" }, { ".conf", "text/plain" }, { ".cpp", "text/plain" }, { ".doc", "application/msword" }, { ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, { ".xls", "application/vnd.ms-excel" }, { ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, { ".exe", "application/octet-stream" }, { ".gif", "image/gif" }, { ".gtar", "application/x-gtar" }, { ".gz", "application/x-gzip" }, { ".h", "text/plain" }, { ".htm", "text/html" }, { ".html", "text/html" }, { ".jar", "application/java-archive" }, { ".java", "text/plain" }, { ".jpeg", "image/jpeg" }, { ".jpg", "image/jpeg" }, { ".js", "application/x-javascript" }, { ".log", "text/plain" }, { ".m3u", "audio/x-mpegurl" }, { ".m4a", "audio/mp4a-latm" }, { ".m4b", "audio/mp4a-latm" }, { ".m4p", "audio/mp4a-latm" }, { ".m4u", "video/vnd.mpegurl" }, { ".m4v", "video/x-m4v" }, { ".mov", "video/quicktime" }, { ".mp2", "audio/x-mpeg" }, { ".mp3", "audio/x-mpeg" }, { ".mp4", "video/mp4" }, { ".mpc", "application/vnd.mpohun.certificate" }, { ".mpe", "video/mpeg" }, { ".mpeg", "video/mpeg" }, { ".mpg", "video/mpeg" }, { ".mpg4", "video/mp4" }, { ".mpga", "audio/mpeg" }, { ".msg", "application/vnd.ms-outlook" }, { ".ogg", "audio/ogg" }, { ".pdf", "application/pdf" }, { ".png", "image/png" }, { ".pps", "application/vnd.ms-powerpoint" }, { ".ppt", "application/vnd.ms-powerpoint" }, { ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation" }, { ".prop", "text/plain" }, { ".rc", "text/plain" }, { ".rmvb", "audio/x-pn-realaudio" }, { ".rtf", "application/rtf" }, { ".sh", "text/plain" }, { ".tar", "application/x-tar" }, { ".tgz", "application/x-compressed" }, { ".txt", "text/plain" }, { ".wav", "audio/x-wav" }, { ".wma", "audio/x-ms-wma" }, { ".wmv", "audio/x-ms-wmv" }, { ".wps", "application/vnd.ms-works" }, { ".xml", "text/plain" }, { ".z", "application/x-compress" }, { ".zip", "application/x-zip-compressed" }, { "", "*/*" } }; }

最后补充一下,布局文件中的dimension是编译到jar包里面去了的,没有jar包的童鞋可以改成自己定义大小。

您可能感兴趣的文章:android简易文件管理器实例(列表式文件目录)Android开发之简单文件管理器实现方法Android编程实现任务管理器的方法浅析Android文件管理器(项目一)Android中创建多线程管理器实例Android使用SmsManager实现短信发送功能android短信管理器SmsManager实例详解


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

android文件管理器用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android文件管理器用法详解

很久没有写东西了,鉴于某某同学文件管理器不会,这里简单介绍一下,同时写一个demon,参考了网上别人写的代码,自己也学习学习,研究研究。首先所谓文件管理器,看起来就是一个列表,列表里面是文件夹或者文件,首先把布局写出来,我想在最上方的左边显
2022-06-06

Python 文件管理实例详解

本文实例讲述了Python 文件管理的方法。分享给大家供大家参考,具体如下: 一、Python中的文件管理 文件管理是很多应用程序的基本功能和重要组成部分。Python可以使文件管理极其简单,特别是和其它语言相对比。 以下,Peyton M
2022-06-04

如何使用android中的文件管理器

这篇文章给大家介绍如何使用android中的文件管理器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。主界面的布局文件如下:
2023-05-31

Android开发之简单文件管理器实现方法

本文实例讲述了Android开发之简单文件管理器实现方法。分享给大家供大家参考,具体如下: 这里运用Java I/O、ListActivity、Dialog、Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件
2022-06-06

浅析Android文件管理器(项目一)

文件管理器是管理文件的软件,帮助用户处理日常工作,管理储存在本地和网络中的文件。所有文件管理器都提供了基本的操作如创建、打开、查看、编辑、移动和删除文件。许多Android文件管理器还提供了额外功能,如网络连接、应用程序管理、存档和压缩处理
2022-06-06

Android WebView组件用法详解

本文实例讲述了Android WebView组件用法。分享给大家供大家参考,具体如下: 如果想WebView能够访问网络,必须在AndroidManifest.xml里面添加权限2022-06-06

详解利用 Express 托管静态文件的方法

通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。 将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了
2022-06-04

详解android使用SAX解析XML文件

解析XML的方式有很多种,大家比较熟悉的可能就是DOM解析。 DOM(文件对象模型)解析:解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以根据DOM接口来操作这个树结构了。 优点:整个文档读入内存,方便操作:支持修改、删除和
2022-06-06

Android怎么实现文件资源管理器

这篇“Android怎么实现文件资源管理器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android怎么实现文件资源管理器
2023-06-29

android之RatingBar控件用法详解

MainActivity.javapackage com.example.mars_2500_ratingbar; import android.support.v7.app.ActionBarActivity; import androi
2022-06-06

android之SeekBar控件用法详解

MainActivity.javapackage com.example.mars_2400_seekbar; import android.support.v7.app.ActionBarActivity; import android.
2022-06-06

C#目录和文件管理操作详解

在C#中常用的目录操作类有Directory,DirectoryInfo,下面这篇文章主要给大家介绍了关于C#目录和文件管理操作的相关资料,需要的朋友可以参考下
2022-11-13

一文详解Jetpack Android新一代导航管理Navigation

这篇文章主要为大家介绍了Jetpack Android新一代导航管理Navigation详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-15

详解Python的Twisted框架中reactor事件管理器的用法

铺垫 在大量的实践中,似乎我们总是通过类似的方式来使用异步编程:监听事件事件发生执行对应的回调函数回调完成(可能产生新的事件添加进监听队列)回到1,监听事件因此我们将这样的异步模式称为Reactor模式,例如在iOS开发中的Run Loop
2022-06-04

详解Oracle控制文件及日志文件的管理问题

目录一、控制文件的管理1、控制文件的概述2、控制文件的创建1、控制文件的重新建立3、控制文件的备份1、将控制文件备份为二进制文件2、将控制文件备份为文本文件4、控制文件的恢复5、添加多路复用的控制文件二、重做日志文件的管理1、重做日志文件概
2022-07-07

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录