存储从gallery android中拾取的图像
我想点击“btnchooserphoto”按钮从gallery和 我现在可以做,但我想存储这些图像,当我再次单击“btnchooserphoto”按钮时,我可以添加其他图像,并且我拾取的图像仍然存在。但是现在图像加载器每次都会重新初始化。。。日志在下面 W/ImageLoader(4503):尝试初始化之前已初始化的ImageLoader。要使用新配置重新初始化ImageLoader,请首先调用ImageLoader.destroy()。 有人知道怎么修吗?谢谢 这是我的密码 主相册存储从gallery android中拾取的图像,android,Android,我想点击“btnchooserphoto”按钮从gallery和 我现在可以做,但我想存储这些图像,当我再次单击“btnchooserphoto”按钮时,我可以添加其他图像,并且我拾取的图像仍然存在。但是现在图像加载器每次都会重新初始化。。。日志在下面 W/ImageLoader(4503):尝试初始化之前已初始化的ImageLoader。要使用新配置重新初始化ImageLoader,请首先调用ImageLoader.destroy()。 有人知道怎么修吗?谢谢 这是我的密码 主相册 publi
public class Album_Main extends Activity {
private Button mbtn,mbtn_choosephoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.album_setting);
mbtn_choosephoto=(Button)findViewById(R.id.btnchooserphoto);
mbtn_choosephoto.setOnClickListener(mbtnchoosephotoonclick);
}
private View.OnClickListener mbtnchoosephotoonclick = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent it = new Intent();
it.setClass(Album_Main.this, Album_Setting.class);
startActivity(it);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
相册设置
public class Album_Setting extends Activity {
GridView gridGallery;
Handler handler;
GalleryAdapter adapter;
ImageView imgSinglePick;
Button btnGalleryPick;
Button btnGalleryPickMul;
Button mbtngoback;
String action;
ViewSwitcher viewSwitcher;
ImageLoader imageLoader;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.album_setting_main);
initImageLoader();
init();
}
private void initImageLoader() {
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.cacheOnDisc().imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565).build();
ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(
this).defaultDisplayImageOptions(defaultOptions).memoryCache(
new WeakMemoryCache());
ImageLoaderConfiguration config = builder.build();
imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
}
private void init() {
handler = new Handler();
gridGallery = (GridView) findViewById(R.id.gridGallery);
gridGallery.setFastScrollEnabled(true);
adapter = new GalleryAdapter(getApplicationContext(), imageLoader);
adapter.setMultiplePick(false);
gridGallery.setAdapter(adapter);
viewSwitcher = (ViewSwitcher) findViewById(R.id.viewSwitcher);
viewSwitcher.setDisplayedChild(1);
mbtngoback=(Button)findViewById(R.id.btngoback);
mbtngoback.setOnClickListener(mbtngobackonclick);
btnGalleryPickMul = (Button) findViewById(R.id.btnGalleryPickMul);
btnGalleryPickMul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Action.ACTION_MULTIPLE_PICK);
startActivityForResult(i, 200);
}
});
}
private View.OnClickListener mbtngobackonclick = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 200 && resultCode == Activity.RESULT_OK) {
String[] all_path = data.getStringArrayExtra("all_path");
ArrayList<CustomGallery> dataT = new ArrayList<CustomGallery>();
for (String string : all_path) {
CustomGallery item = new CustomGallery();
item.sdcardPath = string;
dataT.add(item);
}
storeimage(dataT);
}
}
private void storeimage(ArrayList<CustomGallery> dataT){
viewSwitcher.setDisplayedChild(0);
adapter.addAll(dataT);
}
公共类相册\u设置扩展活动{
GridView gridGallery;
处理者;
厨房适配器;
ImageView imgSinglePick;
按钮btnGalleryPick;
按钮btnGalleryPickMul;
按钮mbtngoback;
弦作用;
取景器取景器;
图像加载器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.album\u setting\u main);
initImageLoader();
init();
}
私有void initImageLoader(){
DisplayImageOptions defaultOptions=新建DisplayImageOptions.Builder()
.cacheOnDisc().imageScaleType(imageScaleType.Justice_拉伸)
.bitmapConfig(Bitmap.Config.RGB_565).build();
ImageLoaderConfiguration.Builder=新建ImageLoaderConfiguration.Builder(
此.defaultDisplayImageOptions(defaultOptions).memoryCache(
新的WeakMemoryCache());
ImageLoaderConfiguration config=builder.build();
imageLoader=imageLoader.getInstance();
init(config);
}
私有void init(){
handler=新的handler();
gridGallery=(GridView)findViewById(R.id.gridGallery);
gridGallery.setFastScrollEnabled(true);
适配器=新的GalleryAdapter(getApplicationContext(),imageLoader);
adapter.setMultiplePick(假);
设置适配器(适配器);
viewSwitcher=(viewSwitcher)findViewById(R.id.viewSwitcher);
viewSwitcher.setDisplayedChild(1);
mbtngoback=(按钮)findviewbyd(R.id.btngoback);
setOnClickListener(mbtngobackonclick);
btnGalleryPickMul=(按钮)findViewById(R.id.btnGalleryPickMul);
btnGalleryPickMul.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图i=新意图(Action.Action\u MULTIPLE\u PICK);
startActivityForResult(i,200);
}
});
}
private View.OnClickListener mbtngobackonclick=new View.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
完成();
}
};
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==200&&resultCode==Activity.RESULT\u确定){
String[]all_path=data.getStringArrayExtra(“all_path”);
ArrayList dataT=新的ArrayList();
for(字符串:所有路径){
CustomGallery项=新建CustomGallery();
item.sdcardPath=字符串;
数据添加(项目);
}
storeimage(dataT);
}
}
私有void存储映像(ArrayList数据){
viewSwitcher.setDisplayedChild(0);
adapter.addAll(dataT);
}
}
CustomGalleryActivity
public class CustomGalleryActivity extends Activity {
GridView gridGallery;
Handler handler;
GalleryAdapter adapter;
ImageView imgNoMedia;
Button btnGalleryOk;
String action;
private ImageLoader imageLoader;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.gallery);
action = getIntent().getAction();
if (action == null) {
finish();
}
initImageLoader();
init();
}
private void initImageLoader() {
try {
String CACHE_DIR = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/.temp_tmp";
new File(CACHE_DIR).mkdirs();
File cacheDir = StorageUtils.getOwnCacheDirectory(getBaseContext(),
CACHE_DIR);
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.cacheOnDisc(true).imageScaleType(ImageScaleType.EXACTLY).cacheOnDisc(true)
.bitmapConfig(Bitmap.Config.RGB_565).build();
ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(
getBaseContext())
.defaultDisplayImageOptions(defaultOptions)
.discCache(new UnlimitedDiscCache(cacheDir))
.memoryCache(new WeakMemoryCache());
ImageLoaderConfiguration config = builder.build();
imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
} catch (Exception e) {
}
}
private void init() {
handler = new Handler();
gridGallery = (GridView) findViewById(R.id.gridGallery);
gridGallery.setFastScrollEnabled(true);
adapter = new GalleryAdapter(getApplicationContext(), imageLoader);
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader,
true, true);
gridGallery.setOnScrollListener(listener);
if (action.equalsIgnoreCase(Action.ACTION_MULTIPLE_PICK)) {
findViewById(R.id.llBottomContainer).setVisibility(View.VISIBLE);
gridGallery.setOnItemClickListener(mItemMulClickListener);
adapter.setMultiplePick(true);
} else if (action.equalsIgnoreCase(Action.ACTION_PICK)) {
findViewById(R.id.llBottomContainer).setVisibility(View.GONE);
gridGallery.setOnItemClickListener(mItemSingleClickListener);
adapter.setMultiplePick(false);
}
gridGallery.setAdapter(adapter);
imgNoMedia = (ImageView) findViewById(R.id.imgNoMedia);
btnGalleryOk = (Button) findViewById(R.id.btnGalleryOk);
btnGalleryOk.setOnClickListener(mOkClickListener);
new Thread() {
@Override
public void run() {
Looper.prepare();
handler.post(new Runnable() {
@Override
public void run() {
adapter.addAll(getGalleryPhotos());
checkImageStatus();
}
});
Looper.loop();
};
}.start();
}
private void checkImageStatus() {
if (adapter.isEmpty()) {
imgNoMedia.setVisibility(View.VISIBLE);
} else {
imgNoMedia.setVisibility(View.GONE);
}
}
View.OnClickListener mOkClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<CustomGallery> selected = adapter.getSelected();
String[] allPath = new String[selected.size()];
for (int i = 0; i < allPath.length; i++) {
allPath[i] = selected.get(i).sdcardPath;
}
Intent data = new Intent().putExtra("all_path", allPath);
setResult(RESULT_OK, data);
finish();
}
};
AdapterView.OnItemClickListener mItemMulClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
adapter.changeSelection(v, position);
}
};
AdapterView.OnItemClickListener mItemSingleClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
CustomGallery item = adapter.getItem(position);
Intent data = new Intent().putExtra("single_path", item.sdcardPath);
setResult(RESULT_OK, data);
finish();
}
};
private ArrayList<CustomGallery> getGalleryPhotos() {
ArrayList<CustomGallery> galleryList = new ArrayList<CustomGallery>();
try {
final String[] columns = { MediaStore.Images.Media.DATA,
MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
null, null, orderBy);
if (imagecursor != null && imagecursor.getCount() > 0) {
while (imagecursor.moveToNext()) {
CustomGallery item = new CustomGallery();
int dataColumnIndex = imagecursor
.getColumnIndex(MediaStore.Images.Media.DATA);
item.sdcardPath = imagecursor.getString(dataColumnIndex);
galleryList.add(item);
}
}
} catch (Exception e) {
e.printStackTrace();
}
// show newest photo at beginning of the list
Collections.reverse(galleryList);
return galleryList;
}
公共类CustomGalleryActivity扩展活动{
GridView gridGallery;
处理者;
厨房适配器;
ImageView媒体;
按钮btnGalleryOk;
弦作用;
私有图像加载器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.gallery);
action=getIntent().getAction();
if(action==null){
完成();
}
initImageLoader();
init();
}
私有void initImageLoader(){
试一试{
String CACHE_DIR=Environment.getExternalStorageDirectory()
.getAbsolutePath()+“/.temp_tmp”;
新文件(CACHE_DIR).mkdirs();
文件cacheDir=StorageUtils.getOwnCacheDirectory(getBaseContext(),
CACHE_DIR);
DisplayImageOptions defaultOptions=新建DisplayImageOptions.Builder()
.cacheOnDisc(true).imageScaleType(imageScaleType.justice).cacheOnDisc(true)
.bitmapConfig(Bitmap.Config.RGB_565).build();
ImageLoaderConfiguration.Builder=新建ImageLoaderConfiguration.Builder(
getBaseContext())
.defaultDisplayImageOptions(默认选项)
.discCache(新的未限制的缓存(cacheDir))
.memoryCache(新的WeakMemoryCache());
ImageLoaderConfiguration config=builder.build();
imageLoader=imageLoader.getInstance();
init(config);
}捕获(例外e){
}
}
私有void init(){
handler=新的handler();
gridGallery=(GridView)findViewById(R.id.gridGallery);
gridGallery.setFastScrollEnabled(true);
适配器=新的GalleryAdapter(getApplicationContext(),imageLoader);
PauseonSrollListener=新的PauseonSrollListener(imageLoader,
真的,真的);
setOnScrollListener(listener);
if(action.equalsIgnoreCase(action.action\u MULTIPLE\u PICK)){
findviewbyd(R.id.llBottomContainer).setVisibility(View.VISIBLE);
setOnItemClickListener(miteMulClickListener);
adapter.setMultiplePick(真);
}else if(action.equalsIgnoreCase(action.action\u PICK)){
findviewbyd(R.id.llBottomContainer).setVisibility(View.GONE);
setOnItemClickListener(mItemSingleClickListener);
adapter.setMultiplePick(假);
}
设置适配器(适配器);