Android 파일 선택 기 상세 설명 및 인 스 턴 스 코드
이 인 스 턴 스 의 실현 과정 은 매우 간단 합 니 다.이렇게 하면 안 드 로 이 드 파일 선택 기 를 신속하게 숙지 하고 개발 효율 을 높 일 수 있 습 니 다.
인터넷 에서 파일 선택 기 에 관 한 인 스 턴 스 를 본 적 이 있 습 니 다.많은 사람들 이 본 인 스 턴 스 는 수정 에 따라 이 루어 진 것 이지 만 이해 하기 쉽 고 효율 도 높 습 니 다.또한 본 인 스 턴 스 는 자신의 특징 이 있 습 니 다.
1.사용자 가 Back 키 를 누 른 이 벤트 를 감청 하여 이전 디 렉 터 리 로 되 돌려 줍 니 다.
2.서로 다른 파일 형식(파일 vs 폴 더,대상 파일 vs 다른 파일)에 대해 특수 처 리 를 했 습 니 다.
지식 포인트 1.File 류 의 사용
파일 선택 기의 주요 기능 은 파일\폴 더,파일 형식 등 을 탐색 하 는 것 입 니 다.모두 자바 File 클래스 를 통 해 이 루어 집 니 다.
지식 점 2.호출 방법 설명
startActivity ForResult()호출 및 onActivity Result()방법 으로 리 셋 된 정 보 를 받 았 습 니 다.
먼저 효과 도 를 다음 과 같이 붙 입 니 다.
다른 것 도 할 말 이 없 으 니 코드 주석 을 보 세 요.아주 간단 합 니 다.
FileChooser Activity.java 에서 파일 선택 을 실현 하 는 클래스 입 니 다.
자바 코드
public class CopyOfFileChooserActivity extends Activity {
private String mSdcardRootPath ; //sdcard
private String mLastFilePath ; //
private ArrayList<FileInfo> mFileLists ;
private FileChooserAdapter mAdatper ;
//
private void setGridViewAdapter(String filePath) {
updateFileItems(filePath);
mAdatper = new FileChooserAdapter(this , mFileLists);
mGridView.setAdapter(mAdatper);
}
// , Adatper
private void updateFileItems(String filePath) {
mLastFilePath = filePath ;
mTvPath.setText(mLastFilePath);
if(mFileLists == null)
mFileLists = new ArrayList<FileInfo>() ;
if(!mFileLists.isEmpty())
mFileLists.clear() ;
File[] files = folderScan(filePath);
if(files == null)
return ;
for (int i = 0; i < files.length; i++) {
if(files[i].isHidden()) //
continue ;
String fileAbsolutePath = files[i].getAbsolutePath() ;
String fileName = files[i].getName();
boolean isDirectory = false ;
if (files[i].isDirectory()){
isDirectory = true ;
}
FileInfo fileInfo = new FileInfo(fileAbsolutePath , fileName , isDirectory) ;
//
mFileLists.add(fileInfo);
}
//When first enter , the object of mAdatper don't initialized
if(mAdatper != null)
mAdatper.notifyDataSetChanged(); //
}
//
private File[] folderScan(String path) {
File file = new File(path);
File[] files = file.listFiles();
return files;
}
private AdapterView.OnItemClickListener mItemClickListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int position,
long id) {
FileInfo fileInfo = (FileInfo)(((FileChooserAdapter)adapterView.getAdapter()).getItem(position));
if(fileInfo.isDirectory()) // ,
updateFileItems(fileInfo.getFilePath()) ;
else if(fileInfo.isPPTFile()){ // ppt ,
Intent intent = new Intent();
intent.putExtra(EXTRA_FILE_CHOOSER, fileInfo.getFilePath());
setResult(RESULT_OK , intent);
finish();
}
else { // .....
toast(getText(R.string.open_file_error_format));
}
}
};
public boolean onKeyDown(int keyCode , KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode()
== KeyEvent.KEYCODE_BACK){
backProcess();
return true ;
}
return super.onKeyDown(keyCode, event);
}
//
public void backProcess(){
// sdcard , , 。
if (!mLastFilePath.equals(mSdcardRootPath)) {
File thisFile = new File(mLastFilePath);
String parentFilePath = thisFile.getParent();
updateFileItems(parentFilePath);
}
else { // sdcard ,
setResult(RESULT_CANCELED);
finish();
}
}
}
이 실례 의 인 터 페 이 스 는 약간 누추 해 보이 지만 여러분 은 이 를 바탕 으로 보완 하고 다른 기능 을 추가 할 수 있 습 니 다.이 인 스 턴 스 코드 다운로드 주소:http://download.csdn.net/detail/qinjuning/4825392。
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.