parent
22943e508a
commit
eee6f45471
@ -0,0 +1,103 @@ |
||||
package com.arialyy.aria.util; |
||||
|
||||
import android.content.Context; |
||||
import android.content.pm.ApplicationInfo; |
||||
import android.content.pm.PackageInfo; |
||||
import android.content.pm.PackageManager; |
||||
import android.graphics.drawable.Drawable; |
||||
import android.graphics.drawable.Icon; |
||||
import com.arialyy.aria.window.FileEntity; |
||||
import java.io.File; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by Aria.Lao on 2017/3/21. |
||||
*/ |
||||
|
||||
public class FileUtil { |
||||
|
||||
Context mContext; |
||||
|
||||
public FileUtil(Context context) { |
||||
mContext = context; |
||||
} |
||||
|
||||
/** |
||||
* 文件列表 |
||||
*/ |
||||
public List<FileEntity> loadFiles(String path) { |
||||
File file = new File(path); |
||||
File[] files = file.listFiles(); |
||||
List<FileEntity> list = new ArrayList<>(); |
||||
for (File f : files) { |
||||
FileEntity entity = new FileEntity(); |
||||
entity.fileName = f.getName(); |
||||
//entity.fileInfo = getFileType(f.getPath());
|
||||
//entity.fileDrawable = getApkIcon(mContext, f.getPath());
|
||||
list.add(entity); |
||||
} |
||||
return list; |
||||
} |
||||
|
||||
/** |
||||
* 获取文件类型 |
||||
*/ |
||||
public FileType getFileType(String path) { |
||||
String exName = getExName(path); |
||||
String type = ""; |
||||
FileType fType = null; |
||||
if (exName.equalsIgnoreCase("apk")) { |
||||
fType = new FileType("应用", getApkIcon(path)); |
||||
} else if (exName.equalsIgnoreCase("img") |
||||
|| exName.equalsIgnoreCase("png") |
||||
|| exName.equalsIgnoreCase("jpg") |
||||
|| exName.equalsIgnoreCase("jepg")) { |
||||
//fType = new FileType("图片", )
|
||||
} else if (exName.equalsIgnoreCase("mp3") || exName.equalsIgnoreCase("wm")) { |
||||
//fType = new FileType("音乐", );
|
||||
} else if (exName.equalsIgnoreCase("mp4") |
||||
|| exName.equalsIgnoreCase("rm") |
||||
|| exName.equalsIgnoreCase("rmvb")) { |
||||
//fType = new FileType("视频", );
|
||||
} return fType; |
||||
} |
||||
|
||||
/** |
||||
* 获取扩展名 |
||||
*/ |
||||
public String getExName(String path) { |
||||
int separatorIndex = path.lastIndexOf("."); |
||||
return (separatorIndex < 0) ? path : path.substring(separatorIndex + 1, path.length()); |
||||
} |
||||
|
||||
/** |
||||
* 获取apk文件的icon |
||||
* |
||||
* @param path apk文件路径 |
||||
*/ |
||||
public Drawable getApkIcon(String path) { |
||||
PackageManager pm = mContext.getPackageManager(); |
||||
PackageInfo info = pm.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES); |
||||
if (info != null) { |
||||
ApplicationInfo appInfo = info.applicationInfo; |
||||
//android有bug,需要下面这两句话来修复才能获取apk图片
|
||||
appInfo.sourceDir = path; |
||||
appInfo.publicSourceDir = path; |
||||
// String packageName = appInfo.packageName; //得到安装包名称
|
||||
// String version=info.versionName; //得到版本信息
|
||||
return pm.getApplicationIcon(appInfo); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
class FileType { |
||||
String name; |
||||
Drawable icon; |
||||
|
||||
public FileType(String name, Drawable icon) { |
||||
this.name = name; |
||||
this.icon = icon; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,55 @@ |
||||
package com.arialyy.aria.window; |
||||
|
||||
import android.os.Bundle; |
||||
import android.os.Environment; |
||||
import android.support.annotation.Nullable; |
||||
import android.support.v4.app.FragmentActivity; |
||||
import android.widget.AbsListView; |
||||
import android.widget.ListView; |
||||
import com.arialyy.aria.R; |
||||
import com.arialyy.aria.util.FileUtil; |
||||
import java.io.File; |
||||
import java.util.ArrayList; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* Created by Aria.Lao on 2017/3/21. |
||||
* 文件选择 |
||||
*/ |
||||
public class AriaFileChangeActivity extends FragmentActivity { |
||||
final String ROOT_PAT = Environment.getExternalStorageDirectory().getPath(); |
||||
ListView mList; |
||||
FileChangeAdapter mAdapter; |
||||
Map<String, List<FileEntity>> mData = new HashMap<>(); |
||||
private String mCurrentPath = ROOT_PAT; |
||||
|
||||
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
setContentView(R.layout.activity_aria_file_shange); |
||||
mList = (ListView) findViewById(R.id.list); |
||||
mList.setOnScrollListener(new AbsListView.OnScrollListener() { |
||||
int state; |
||||
|
||||
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { |
||||
state = scrollState; |
||||
} |
||||
|
||||
@Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, |
||||
int totalItemCount) { |
||||
if (state == AbsListView.OnScrollListener.SCROLL_STATE_IDLE |
||||
&& firstVisibleItem + visibleItemCount == totalItemCount) { |
||||
loadMore(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
private void loadMore() { |
||||
|
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,77 @@ |
||||
package com.arialyy.aria.window; |
||||
|
||||
import android.content.Context; |
||||
import android.util.SparseBooleanArray; |
||||
import android.view.LayoutInflater; |
||||
import android.view.View; |
||||
import android.view.ViewGroup; |
||||
import android.widget.BaseAdapter; |
||||
import android.widget.CheckBox; |
||||
import android.widget.ImageView; |
||||
import android.widget.TextView; |
||||
import com.arialyy.aria.R; |
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* Created by Aria.Lao on 2017/3/21. |
||||
*/ |
||||
final class FileChangeAdapter extends BaseAdapter { |
||||
|
||||
List<FileEntity> mData = new ArrayList<>(); |
||||
SparseBooleanArray mCheck = new SparseBooleanArray(); |
||||
Context mContext; |
||||
|
||||
public FileChangeAdapter(Context context, List<FileEntity> list) { |
||||
mContext = context; |
||||
mData.addAll(list); |
||||
for (int i = 0, len = mData.size(); i < len; i++) { |
||||
mCheck.append(i, false); |
||||
} |
||||
} |
||||
|
||||
@Override public int getCount() { |
||||
return mData.size(); |
||||
} |
||||
|
||||
@Override public Object getItem(int position) { |
||||
return null; |
||||
} |
||||
|
||||
@Override public long getItemId(int position) { |
||||
return 0; |
||||
} |
||||
|
||||
@Override public View getView(int position, View convertView, ViewGroup parent) { |
||||
FileChangeHolder holder = null; |
||||
if (convertView == null) { |
||||
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_file, null); |
||||
holder = new FileChangeHolder(convertView); |
||||
convertView.setTag(holder); |
||||
} else { |
||||
holder = (FileChangeHolder) convertView.getTag(); |
||||
} |
||||
|
||||
holder.checkBox.setChecked(mCheck.get(position, false)); |
||||
return convertView; |
||||
} |
||||
|
||||
public void setCheck(int position, boolean check) { |
||||
if (position >= mData.size()) return; |
||||
mCheck.put(position, check); |
||||
notifyDataSetChanged(); |
||||
} |
||||
|
||||
private static class FileChangeHolder { |
||||
TextView title, info; |
||||
ImageView icon; |
||||
CheckBox checkBox; |
||||
|
||||
FileChangeHolder(View view) { |
||||
title = (TextView) view.findViewById(R.id.title); |
||||
info = (TextView) view.findViewById(R.id.info); |
||||
icon = (ImageView) view.findViewById(R.id.icon); |
||||
checkBox = (CheckBox) view.findViewById(R.id.checkbox); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,14 @@ |
||||
package com.arialyy.aria.window; |
||||
|
||||
import android.graphics.drawable.Drawable; |
||||
|
||||
/** |
||||
* Created by Aria.Lao on 2017/3/21. |
||||
*/ |
||||
|
||||
public class FileEntity { |
||||
public String fileName; |
||||
public String fileInfo; |
||||
public int fileIcon; |
||||
public Drawable fileDrawable; |
||||
} |
@ -0,0 +1,14 @@ |
||||
<?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" |
||||
> |
||||
|
||||
<ListView |
||||
android:id="@+id/list" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
/> |
||||
|
||||
</LinearLayout> |
@ -0,0 +1,51 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:orientation="vertical" |
||||
android:padding="16dp" |
||||
> |
||||
|
||||
<CheckBox |
||||
android:id="@+id/checkbox" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignParentRight="true" |
||||
android:layout_centerVertical="true" |
||||
android:clickable="false" |
||||
/> |
||||
|
||||
<ImageView |
||||
android:id="@+id/img" |
||||
android:layout_width="50dp" |
||||
android:layout_height="50dp" |
||||
android:layout_centerVertical="true" |
||||
/> |
||||
|
||||
<TextView |
||||
android:id="@+id/title" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignTop="@+id/img" |
||||
android:layout_marginLeft="10dp" |
||||
android:layout_marginRight="5dp" |
||||
android:layout_toLeftOf="@+id/checkbox" |
||||
android:layout_toRightOf="@+id/img" |
||||
android:ellipsize="end" |
||||
android:maxLines="1" |
||||
android:textSize="18sp" |
||||
android:textStyle="bold" |
||||
/> |
||||
|
||||
<TextView |
||||
android:id="@+id/info" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_alignLeft="@+id/title" |
||||
android:layout_below="@+id/title" |
||||
android:layout_marginRight="5dp" |
||||
android:layout_marginTop="10dp" |
||||
android:layout_toLeftOf="@+id/checkbox" |
||||
/> |
||||
|
||||
</RelativeLayout> |
Loading…
Reference in new issue