Android 이미지 업로드 기능 구현
private void showDialog() {
View view = getLayoutInflater().inflate(R.layout.user_header_dialog, null);
final Dialog dialog = new Dialog(this, R.style.transparentFrameWindowStyle);
dialog.setContentView(view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
Window window = dialog.getWindow();
//
window.setWindowAnimations(R.style.main_menu_animstyle);
WindowManager.LayoutParams wl = window.getAttributes();
wl.x = 0;
wl.y = getWindowManager().getDefaultDisplay().getHeight();
//
wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
//
dialog.onWindowAttributesChanged(wl);
//
dialog.setCanceledOnTouchOutside(true);
dialog.show();
btn_picture = (Button) window.findViewById(R.id.btn_picture);
btn_photo = (Button) window.findViewById(R.id.btn_photo);
btn_cancle = (Button) window.findViewById(R.id.btn_cancle);
btn_picture.setOnClickListener(new View.OnClickListener() {//
@SuppressLint("InlinedApi")
@Override
public void onClick(View v) {
Intent intent = new Intent(PhotoSelectActivity.this, AlbumActivity.class);
startActivity(intent);
dialog.dismiss();
}
});
btn_photo.setOnClickListener(new View.OnClickListener() {//
@SuppressLint("InlinedApi")
@Override
public void onClick(View v) {
photo();
dialog.dismiss();
}
});
btn_cancle.setOnClickListener(new View.OnClickListener() {//
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
이것 은 탄 상자 부분의 코드 입 니 다.여기 서 주의해 야 할 것 은 안 드 로 이 드 6.0 시스템 이 호출 될 때 특히 카메라 와 sd 권한 에 접근 하 는 문제 입 니 다.안 드 로 이 드 6.0 이하 의 시스템 과 다 릅 니 다.안 드 로 이 드 6.0 이하 의 시스템 은 안 드 로 이 드 Manifest.xml 파일 에 설정 하면 됩 니 다.android 6.0 및 6.0 이상 이면 AndroidManifest.xml 에서 설명 할 뿐만 아니 라 동적 신청 권한 도 필요 합 니 다.만약 에 신청 권한 이 없 으 면 프로그램의 반 짝 임 을 초래 할 수 있 습 니 다.여기 서 android 6.0 및 6.0 이상 에 적합 하지 않 습 니 다.android 6.0 및 6.0 이상 의 시스템 권한 에 대해 서 는 나중에 블 로그 에서 언급 할 것 입 니 다.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PICTURE:
if (Bimp.tempSelectBitmap.size() < 9 && resultCode == RESULT_OK) {
File file = new File(Environment.getExternalStorageDirectory() + "/" + mImageFileName);
mImagePath = file.getPath();
Bitmap bitmapFromUrl = FileUtils.getBitmapFromUrl(mImagePath, 320, 480);
String[] split = mImagePath.split("0/");
String strUrl = "";
if (split != null && split.length > 0) {
strUrl = split[1];
}
//
FileUtils.setPicToView(PhotoSelectActivity.this,bitmapFromUrl, strUrl);
//
File iconDir = FileUtils.getIconDir(PhotoSelectActivity.this);
String absolutePath = iconDir.getAbsolutePath();
String picPath = absolutePath + strUrl;
ImageItem takePhoto = new ImageItem();
takePhoto.setBitmap(bitmapFromUrl);
takePhoto.setImagePath(picPath);
Bimp.tempSelectBitmap.add(takePhoto);
}
break;
}
}
여 기 는 카 메 라 를 호출 하여 사진 을 찍 고 돌아 올 때 여 기 를 호출 합 니 다.그림 을 가 져 오 는 동시에 그림 을 압축 처리 하 는 동시에 sd 에 캐 시 하고 해당 하 는 경 로 를 가 져 옵 니 다.
/**
*
*/
private void cleanImageList() {
Bimp.max = 0;
Bimp.tempSelectBitmap.clear();
}
되 돌아 오 거나 물리 물리 적 되 돌아 오 는 키 를 눌 렀 을 때 정 의 된 정적 변 수 를 0 으로 할당 하고 그림 저장 시 정 의 된 정적 list 집합 을 비 워 야 합 니 다.
private void initPow() {
View view = getLayoutInflater().inflate(R.layout.listview_popupwindows, null);
final Dialog dialog = new Dialog(this, R.style.Dialog_Fullscreen);
dialog.setContentView(view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
Window window = dialog.getWindow();
//
window.setWindowAnimations(R.style.main_menu_animstyle);
WindowManager.LayoutParams wl = window.getAttributes();
wl.x = 0;
wl.y = getWindowManager().getDefaultDisplay().getHeight();
int height = 0;
int h=(int) (mScreenHeight / 1.6);
int listH=AlbumActivity.contentList.size()*DensityUtil.dip2px(AlbumActivity.this,80);
if (listH==0) {
height=h;
}else{
if (listH>h) {
height=h;
}else{
height=listH;
}
}
//
wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
wl.height = height;
//
dialog.onWindowAttributesChanged(wl);
//
dialog.setCanceledOnTouchOutside(true);
dialog.show();
ListView listview = (ListView) window.findViewById(R.id.listview);
ListAdapter listAdapter = new ListAdapter(AlbumActivity.this);
listview.setAdapter(listAdapter);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
dataList = (ArrayList<ImageItem>) AlbumActivity.contentList.get(arg2).imageList;
String folderName = AlbumActivity.contentList.get(arg2).bucketName;
tv_all.setText("" + folderName);
gridImageAdapter = new AlbumGridViewAdapter(AlbumActivity.this, dataList, Bimp.tempSelectBitmap);
agridView.setAdapter(gridImageAdapter);
dialog.dismiss();
}
});
}
여 기 는 그림 에서 전시 페이지 를 선택 하고 모든 그림 을 클릭 할 때의 탄 상 자 를 선택 합 니 다.하나의 Dialog 와 listview 로 이 루어 집 니 다.여기 서 주의해 야 할 것 은 listview 가 보 여 주 는 높이 문제 입 니 다.여기 서 모든 listview 항목 의 높이 와 화면의 높이 를 얻 을 수 있 습 니 다.만약 에 listview 항목 의 높이 와 화면 높이/1.6 이상 이면화면 높이/1.6 을 사용 합 니 다.만약 에 listview 항목 의 높이 와 화면 높이/1.6 보다 작 으 면 listview 항목 의 높이 를 사용 합 니 다.이렇게 하면 거의 실현 되 지 않 을 것 이다.다음은 운행 효과 이다.원본 코드:Androidphoto
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.