版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android怎么实现仿微信朋友圈图片选择器
这篇文章主要为大家展示了“Android怎么实现仿微信朋友圈图片选择器”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让在下带领大家一起研究并学习一下“Android怎么实现仿微信朋友圈图片选择器”这篇文章吧。最近做开发需要解决一个模仿微信朋友圈附加图片的功能,具体要求如下:(1)从手机中最多选择3张图片,可拍照上传;(2)选择的图片可以点击移除然后再添加新图片;(3)可以在手机包含图片的各个文件夹中随意选择等。本博客主要实现的是以上功能,其他诸如主界面布局、各种控件添加和提交功能等旨在说明问题,只做了简单处理,重点在图片选择添加部分。该功能的实现主要引用了一个图片加载的开源框架universal-image-loader。其中截图如下:
为了不过于冗余,过滤了部分布局文件和资源文件,在这里提供源码下载地址,有兴趣的读者可以下载观看(注:我使用的AndroidStudio1.4,SdkVersion为23,在小米note【Android4.4】上调试)。下面开始我们的主要内容:主界面布局activity_main.xml(主要使用一个GridView实现):<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="fill_parent"
android:background="#f7614d"
android:paddingLeft="37px"
android:layout_height="70dp">
<TextView
android:layout_centerInParent="true"
android:text="附图案例"
android:textSize="25sp"
android:textColor="#ffffff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:layout_height="20dp"
android:background="#00000000"/>
<LinearLayout
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv11"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文字描述"
android:textSize="23sp"
/>
<View
android:layout_width="fill_parent"
android:layout_height="10dp"
android:background="#00000000"/>
<EditText
android:paddingTop="20dp"
android:background="@drawable/bg_et"
android:id="@+id/editText"
android:inputType="textMultiLine"
android:gravity="left|top"
android:padding="5dp"
android:maxLength="300"
android:hint="客官,写点评论吧..."
android:textColorHint="#808080"
android:textSize="20sp"
android:layout_width="fill_parent"
android:layout_height="150dp"
/>
<View
android:layout_width="fill_parent"
android:layout_height="20dp"
android:background="#00000000"/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="附加图片"
android:textSize="23sp"
/>
<View
android:layout_width="fill_parent"
android:layout_height="10dp"
android:background="#00000000"/>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:horizontalSpacing="2dp"
android:verticalSpacing="5dp"
android:scrollbars="none"
android:listSelector="#00000000"
android:numColumns="3"
>
</GridView>
<Button
android:id="@+id/submit_btn"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:background="@drawable/bg_submit"
android:text="提交"
android:textSize="23sp"
android:textColor="#FFFFFF"/>
</LinearLayout>
</LinearLayout>图片选择界面布局activity_select_picture.xml:<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#c000"
>
<Button
android:id="@+id/btn_back"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="8dp"
android:background="@drawable/ic_back_light"
android:onClick="back"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
android:layout_toRightOf="@+id/btn_back"
android:text="图片"
android:textColor="#ffffff"
android:textSize="16sp"
/>
<Button
android:id="@+id/btn_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="8dp"
android:background="@null"
android:gravity="center"
android:onClick="ok"
android:text="完成"
android:textColor="#fff"
android:textSize="14sp"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#d000"
>
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom"
android:horizontalSpacing="3dp"
android:numColumns="3"
android:scrollbars="none"
android:verticalSpacing="5dp"
>
</GridView>
<RelativeLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:background="#c000"
>
<Button
android:id="@+id/btn_select"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="8dp"
android:background="@drawable/spinner_bg"
android:onClick="select"
android:text="所有图片"
android:textColor="#fff"
android:textSize="14sp"
/>
</RelativeLayout>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="360dp"
android:layout_above="@id/bottom"
android:background="#fff"
android:visibility="gone"
>
</ListView>
</RelativeLayout>
</LinearLayout>主界面Java代码MainActivity.java:package
com.custompictureselect;
import
android.app.Activity;
import
android.content.Context;
import
android.content.Intent;
import
android.graphics.BitmapFactory;
import
android.os.Bundle;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
android.view.WindowManager;
import
android.widget.BaseAdapter;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.GridView;
import
android.widget.ImageView;
import
com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import
com.nostra13.universalimageloader.core.ImageLoader;
import
com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import
com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import
java.util.ArrayList;
public
class
MainActivity
extends
Activity
{
private
GridView
gridview;
private
EditText
editText
;
private
GridAdapter
gridAdapter;
private
Context
context
;
private
static
final
int
REQUEST_PICK
=
0;
//存放所有选择的照片
private
ArrayList<String>
allSelectedPicture
=
new
ArrayList<String>();
//存放从选择界面选择的照片
private
ArrayList<String>
selectedPicture
=
new
ArrayList<String>();
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context
=
this
;
//设置在activity启动的时候输入法默认是不开启的
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
ImageLoaderConfiguration
config
=
new
ImageLoaderConfiguration.Builder(this)
.threadPriority(Thread.NORM_PRIORITY
-
2)//设置当前线程的优先级
.denyCacheImageMultipleSizesInMemory()
.diskCacheFileNameGenerator(new
Md5FileNameGenerator())//使用MD5对UIL进行加密命名
.diskCacheSize(100
*
1024
*
1024)//50
Mb
sd卡(本地)缓存的最大值
.diskCacheFileCount(300)//
可以缓存的文件数量
.tasksProcessingOrder(QueueProcessingType.LIFO)//后进先出
.build();
//初始化操作
ImageLoader.getInstance().init(config);
initView();
}
/**
*
初始化视图
*/
private
void
initView(){
editText
=
(EditText)
findViewById(R.id.editText);
//显示图片
gridview
=
(GridView)
findViewById(R.id.gridview);
gridAdapter
=
new
GridAdapter();
gridview.setAdapter(gridAdapter);
}
/**
*
展示图片的GridView的适配器
*/
class
GridAdapter
extends
BaseAdapter
{
public
LayoutInflater
layoutInflater
=
LayoutInflater.from(context);
@Override
public
int
getCount()
{
return
allSelectedPicture.size()+
1;
}
@Override
public
Object
getItem(int
position)
{
return
position;
}
@Override
public
long
getItemId(int
position)
{
return
position;
}
@Override
public
View
getView(final
int
position,
View
convertView,
ViewGroup
parent)
{
ViewHolder
holder
=
null
;
if
(convertView
==
null)
{
holder
=
new
ViewHolder();
convertView
=
layoutInflater.inflate(R.layout.childgrid_item,
null);
holder.image
=
(ImageView)
convertView.findViewById(R.id.child_iv);
holder.btn
=
(Button)
convertView.findViewById(R.id.child_delete);
holder.image.setScaleType(ImageView.ScaleType.CENTER_CROP);
convertView.setTag(holder);
}
else{
holder
=
(ViewHolder)
convertView.getTag();
}
if
(position
==
allSelectedPicture.size())
{
holder.image.setImageBitmap(BitmapFactory.decodeResource(
context.getResources(),
R.drawable.icon_addpic));
holder.btn.setVisibility(View.GONE);
holder.image.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
selectClick();
}
});
if
(position
==
3)
{
holder.image.setVisibility(View.GONE);
}
}
else
{
ImageLoader.getInstance().displayImage("file://"
+
allSelectedPicture.get(position),
holder.image);
holder.btn.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
//点击后移除图片
allSelectedPicture.remove(position);
//更新UI
gridview.setAdapter(gridAdapter);
}
});
}
return
convertView;
}
}
public
class
ViewHolder
{
public
ImageView
image;
public
Button
btn
;
}
private
void
selectClick(){
Intent
intent
=
new
Intent();
intent.setClass(MainActivity.this
,
SelectPictureActivity.class);
Bundle
bundle
=
new
Bundle();
bundle.putStringArrayList("allSelectedPicture",
allSelectedPicture);
intent.putExtras(bundle);
if(allSelectedPicture.size()<
3){
startActivityForResult(intent,
REQUEST_PICK);
}
}
@SuppressWarnings("unchecked")
@Override
protected
void
onActivityResult(int
requestCode,
int
resultCode,
Intent
data)
{
if
(resultCode
==
RESULT_OK)
{
selectedPicture
=
(ArrayList)
data.getSerializableExtra(SelectPictureActivity.INTENT_SELECTED_PICTURE);
for(String
str
:
selectedPicture){
if(!allSelectedPicture.contains(str)){
allSelectedPicture.add(str);
gridview.setAdapter(gridAdapter);
}
}
}
}
}选择图片界面Java代码SelectPictureActivity.java:package
com.custompictureselect;
import
android.app.Activity;
import
android.content.ContentResolver;
import
android.content.Context;
import
android.content.Intent;
import
android.database.Cursor;
import
android.graphics.Bitmap;
import
.Uri;
import
android.os.Bundle;
import
android.os.Environment;
import
vider.MediaStore;
import
android.util.Log;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.view.ViewGroup;
import
android.view.Window;
import
android.view.animation.Animation;
import
android.view.animation.Animation.AnimationListener;
import
android.view.animation.TranslateAnimation;
import
android.widget.AdapterView;
import
android.widget.AdapterView.OnItemClickListener;
import
android.widget.BaseAdapter;
import
android.widget.Button;
import
android.widget.GridView;
import
android.widget.ImageView;
import
android.widget.ListView;
import
android.widget.TextView;
import
android.widget.Toast;
import
com.nostra13.universalimageloader.core.DisplayImageOptions;
import
com.nostra13.universalimageloader.core.ImageLoader;
import
com.nostra13.universalimageloader.core.assist.ImageScaleType;
import
java.io.File;
import
java.text.SimpleDateFormat;
import
java.util.ArrayList;
import
java.util.Date;
import
java.util.HashMap;
import
java.util.List;
public
class
SelectPictureActivity
extends
Activity
{
//
最多选择图片的个数
private
static
int
MAX_NUM
=
3;
private
static
final
int
TAKE_PICTURE
=
520;
public
static
final
String
INTENT_MAX_NUM
=
"intent_max_num";
public
static
final
String
INTENT_SELECTED_PICTURE
=
"intent_selected_picture";
private
Context
context;
private
GridView
gridview;
private
PictureAdapter
adapter;
/**
*
临时的辅助类,用于防止同一个文件夹的多次扫描
*/
private
HashMap<String,
Integer>
tmpDir
=
new
HashMap<String,
Integer>();
private
ArrayList<ImageFloder>
mDirPaths
=
new
ArrayList<ImageFloder>();
/**
*
具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(...)、loadImage(...),
*/
private
ImageLoader
loader;
/**
*
用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,
*
是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理。
*/
private
DisplayImageOptions
options;
private
ContentResolver
mContentResolver;
//选择按钮和完成按钮
private
Button
btn_select,
btn_ok;
//图片文件的列表
private
ListView
listview;
private
FolderAdapter
folderAdapter;
private
ImageFloder
imageAll,
currentImageFolder;
//已选择的图片
private
ArrayList<String>
selectedPicture
=
new
ArrayList<String>();
private
String
cameraPath
=
null;
private
int
isExisted
;
private
ArrayList<String>
existedPictureList
=
new
ArrayList<String>();
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_select_picture);
MAX_NUM
=
getIntent().getIntExtra(INTENT_MAX_NUM,
3);
Bundle
bundle
=
getIntent().getExtras();
existedPictureList
=
bundle.getStringArrayList("allSelectedPicture");
isExisted
=
existedPictureList.size();
context
=
this;
mContentResolver
=
getContentResolver();
loader
=
ImageLoader.getInstance();
options
=
new
DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)//设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_launcher)//设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)
//设置下载的图片是否缓存在SD卡中
.considerExifParams(true)//启用EXIF和JPEG图像格式
.imageScaleType(ImageScaleType.EXACTLY)//图像将完全按比例缩小的目标大小
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
.build();
initView();
}
/**
*
点击"所有图片"按钮事件
*
@param
v
*/
public
void
select(View
v)
{
if
(listview.getVisibility()
==
View.VISIBLE)
{
hideListAnimation();
}
else
{
listview.setVisibility(View.VISIBLE);
showListAnimation();
folderAdapter.notifyDataSetChanged();
}
}
/**
*
设置ListView的移动的动画效果
*/
public
void
showListAnimation()
{
TranslateAnimation
ta
=
new
TranslateAnimation(1,
0f,
1,
0f,
1,
1f,
1,
0f);
ta.setDuration(200);
listview.startAnimation(ta);
}
/**
*
隐藏ListView的移动的动画效果
*/
public
void
hideListAnimation()
{
TranslateAnimation
ta
=
new
TranslateAnimation(1,
0f,
1,
0f,
1,
0f,
1,
1f);
ta.setDuration(200);
listview.startAnimation(ta);
ta.setAnimationListener(new
AnimationListener()
{
@Override
public
void
onAnimationStart(Animation
animation)
{
}
@Override
public
void
onAnimationRepeat(Animation
animation)
{
}
@Override
public
void
onAnimationEnd(Animation
animation)
{
listview.setVisibility(View.INVISIBLE);
}
});
}
/**
*
点击完成按钮
*/
public
void
ok(View
v)
{
Intent
data
=
new
Intent();
data.putExtra(INTENT_SELECTED_PICTURE,
selectedPicture);
setResult(RESULT_OK,
data);
this.finish();
}
/**
*
视图初始化
*/
private
void
initView()
{
imageAll
=
new
ImageFloder();
imageAll.setDir(getResources().getString(R.string.dir_all_pictures));
currentImageFolder
=
imageAll;
mDirPaths.add(imageAll);
btn_ok
=
(Button)
findViewById(R.id.btn_ok);
btn_ok.setText(getResources().getString(R.plete)
+
isExisted
+
"/"
+
MAX_NUM);
btn_select
=
(Button)
findViewById(R.id.btn_select);
gridview
=
(GridView)
findViewById(R.id.gridview);
adapter
=
new
PictureAdapter();
gridview.setAdapter(adapter);
gridview.setOnItemClickListener(new
OnItemClickListener()
{
@Override
public
void
onItemClick(AdapterView<?>
parent,
View
view,
int
position,
long
id)
{
if
(position
==
0)
{
goCamare();
}
}
});
listview
=
(ListView)
findViewById(R.id.listview);
folderAdapter
=
new
FolderAdapter();
listview.setAdapter(folderAdapter);
listview.setOnItemClickListener(new
OnItemClickListener()
{
@Override
public
void
onItemClick(AdapterView<?>
parent,
View
view,
int
position,
long
id)
{
currentImageFolder
=
mDirPaths.get(position);
hideListAnimation();
adapter.notifyDataSetChanged();
btn_select.setText(currentImageFolder.getName());
}
});
getThumbnail();
}
/**
*
使用相机拍照
*/
protected
void
goCamare()
{
if
(isExisted
+
selectedPicture.size()
+
1
>
MAX_NUM)
{
Toast.makeText(context,
getResources().getString(R.string.chose_at_most)
+
MAX_NUM
+
getResources().getString(R.string.sheet),
Toast.LENGTH_SHORT).show();
return;
}
Intent
openCameraIntent
=
new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri
imageUri
=
getOutputMediaFileUri();
openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
imageUri);
startActivityForResult(openCameraIntent,
TAKE_PICTURE);
}
/**
*
用于拍照时获取输出的Uri
*/
protected
Uri
getOutputMediaFileUri()
{
File
mediaStorageDir
=
new
File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"Night");
if
(!mediaStorageDir.exists())
{
if
(!mediaStorageDir.mkdirs())
{
Log.d("MyCameraApp",
"failed
to
create
directory");
return
null;
}
}
String
timeStamp
=
new
SimpleDateFormat("yyyyMMdd_HHmmss").format(new
Date());
File
mediaFile
=
new
File(mediaStorageDir.getPath()
+
File.separator
+
"IMG_"
+
timeStamp
+
".jpg");
cameraPath
=
mediaFile.getAbsolutePath();
return
Uri.fromFile(mediaFile);
}
@Override
protected
void
onActivityResult(int
requestCode,
int
resultCode,
Intent
data)
{
if
(resultCode
==
RESULT_OK
&&
cameraPath
!=
null)
{
selectedPicture.add(cameraPath);
Intent
data2
=
new
Intent();
data2.putExtra(INTENT_SELECTED_PICTURE,
selectedPicture);
setResult(RESULT_OK,
data2);
this.finish();
}
}
public
void
back(View
v)
{
onBackPressed();
}
class
PictureAdapter
extends
BaseAdapter
{
@Override
public
int
getCount()
{
return
currentImageFolder.images.size()
+
1;
}
@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)
{
//自定义的一个类用来缓存convertview
ViewHolder
holder
=
null;
if
(convertView
==
null)
{
convertView
=
View.inflate(context,
R.layout.grid_item_picture,
null);
holder
=
new
ViewHolder();
holder.iv
=
(ImageView)
convertView.findViewById(R.id.iv);
holder.checkBox
=
(Button)
convertView.findViewById(R.id.check);
convertView.setTag(holder);
}
else
{
holder
=
(ViewHolder)
convertView.getTag();
}
if
(position
==
0)
{//拍摄图片
holder.iv.setImageResource(R.drawable.pickphotos_to_camera_normal);
holder.checkBox.setVisibility(View.INVISIBLE);
}
else
{
position
=
position
-
1;
holder.checkBox.setVisibility(View.VISIBLE);
final
ImageItem
item
=
currentImageFolder.images.get(position);
//显示图片
loader.displayImage("file://"
+
item.path,
holder.iv,
options);
//是否选中
boolean
isSelected
=
(selectedPicture.contains(item.path)
||
existedPictureList.contains(item.path));
holder.checkBox.setOnClickListener(new
OnClickListener()
{
@Override
public
void
onClick(View
v)
{
//若选中的图片多于所设置的上限,不再加入
if
(!v.isSelected()
&&
isExisted
+
selectedPicture.size()
+
1
>
MAX_NUM)
{
Toast.makeText(context,
getResources().getString(R.string.chose_at_most)
+
MAX_NUM
+
getResources().getString(R.string.sheet),
Toast.LENGTH_SHORT).show();
return;
}
//二次选择,移除
if
(selectedPicture.contains(item.path)||
existedPictureList.contains(item.path))
{
selectedPicture.remove(item.path);
}
else
{
//加入数组
selectedPicture.add(item.path);
}
btn_ok.setEnabled(selectedPicture.size()>0);
btn_ok.setText(getResources().getString(R.plete)
+
(selectedPicture.size()+
isExisted)
+
"/"
+
MAX_NUM);
v.setSelected(selectedPicture.contains(item.path)||
existedPictureList.contains(item.path));
}
});
holder.checkBox.setSelected(isSelected);
}
return
convertView;
}
}
//自定义的一个类用来缓存convertview
class
ViewHolder
{
ImageView
iv;
Button
checkBox;
}
/**
*
所有图片
*/
class
FolderAdapter
extends
BaseAdapter
{
@Override
public
int
getCount()
{
return
mDirPaths.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)
{
FolderViewHolder
holder
=
null;
if
(convertView
==
null)
{
convertView
=
View.inflate(context,
R.layout.list_dir_item,
null);
holder
=
new
FolderViewHolder();
holder.id_dir_item_image
=
(ImageView)
convertView.findViewById(R.id.id_dir_item_image);
holder.id_dir_item_name
=
(TextView)
convertView.findViewById(R.id.id_dir_item_name);
holder.id_dir_item_count
=
(TextView)
convertView.findViewById(R.id.id_dir_item_count);
holder.choose
=
(ImageView)
convertView.findViewById(R.id.choose);
convertView.setTag(holder);
}
else
{
holder
=
(FolderViewHolder)
convertView.getTag();
}
ImageFloder
item
=
mDirPaths.get(position);
loader.displayImage("file://"
+
item.getFirstImagePath(),
holder.id_dir_item_image,
options);
holder.id_dir_item_count.setText(item.images.size()
+
getResources().getString(R.string.sheet));
holder.id_dir_item_name.setText(item.getName());
holder.choose.setVisibility(currentImageFolder
==
item
?
View.VISIBLE
:
View.GONE);
retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋小学冀人版科学五年级上册第三单元 物质的变化《10 燃烧的秘密》教学设计
- 社区医生面试题及答案
- 2026年一建市政公用工程实务考前真题模拟通关试卷(含答案)
- 2026年一建民航工程难题精练试卷及答案
- 2026年一建民航工程考前测评试卷及答案
- 2026党群组织面试题及答案
- 2026年一建建筑实务考前能力提升试卷及答案
- 2026公安兼职面试题及答案
- 2026广西检察院面试题及答案
- 2026秋新教科版科学四年级上册全册核心素养教案教学设计
- 2026年安全生产月100张看图找隐患详解(可编辑版)
- 精装修成品保护施工方案与措施
- 健康体检随访工作制度范本
- 2026北京外国语大学纪检监察岗位招聘建设笔试模拟试题及答案解析
- (2025年)NICE指南:老年人和50岁及以上高危人群跌倒的评估和预防(NG.249)解读
- 中国主动脉夹层诊疗指南(2025版)
- 7.3 云南省(课件42张)- 星球版地理八年级下册
- 肺气肿的课件
- 猫砂制作技术指导
- 中科曙光公司在线测评题
- 基层工会组织内控制度
评论
0/150
提交评论