Android GetSharedReferences on暂停帮助存储图像
正在尝试将图像存储在此Flickr gallery中,这样当用户离开活动并返回图像时,就不需要再次加载图像。。。我一直在阅读有关onPause方法中使用的GetSharedReference以防止图像被破坏。。。唯一的问题是,我找不到任何处理纯图像文本字段之类的示例…谢谢您的帮助Android GetSharedReferences on暂停帮助存储图像,android,sharedpreferences,Android,Sharedpreferences,正在尝试将图像存储在此Flickr gallery中,这样当用户离开活动并返回图像时,就不需要再次加载图像。。。我一直在阅读有关onPause方法中使用的GetSharedReference以防止图像被破坏。。。唯一的问题是,我找不到任何处理纯图像文本字段之类的示例…谢谢您的帮助 package com.windmillagency; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS
package com.windmillagency;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
public class AndroidFlickrActivity extends BT_activity_base {
public String thisActivityName = "Flickr";
ProgressDialog progressDialog;
BackgroundThread backgroundThread;
public class FlickrImage {
String Id;
String Owner;
String Secret;
String Server;
String Farm;
String Title;
Bitmap FlickrBitmap;
FlickrImage(String _Id, String _Owner, String _Secret,
String _Server, String _Farm, String _Title){
Id = _Id;
Owner = _Owner;
Secret = _Secret;
Server = _Server;
Farm = _Farm;
Title = _Title;
FlickrBitmap = preloadBitmap();
}
private Bitmap preloadBitmap(){
Bitmap bm= null;
String FlickrPhotoPath =
"http://farm" + Farm + ".static.flickr.com/"
+ Server + "/" + Id + "_" + Secret + "_m.jpg";
URL FlickrPhotoUrl = null;
try {
FlickrPhotoUrl = new URL(FlickrPhotoPath);
HttpURLConnection httpConnection
= (HttpURLConnection) FlickrPhotoUrl.openConnection();
httpConnection.setDoInput(true);
httpConnection.connect();
InputStream inputStream = httpConnection.getInputStream();
bm = BitmapFactory.decodeStream(inputStream);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bm;
}
public Bitmap getBitmap(){
return FlickrBitmap;
}
}
class FlickrAdapter extends BaseAdapter{
private Context context;
private FlickrImage[] FlickrAdapterImage;;
FlickrAdapter(Context c, FlickrImage[] fImage){
context = c;
FlickrAdapterImage = fImage;
}
public int getCount() {
// TODO Auto-generated method stub
return FlickrAdapterImage.length;
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return FlickrAdapterImage[position];
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView image;
if (convertView == null) {
image = new ImageView(context);
image.setLayoutParams(new Gallery.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
image.setPadding(8, 8, 8, 8);
} else {
image = (ImageView) convertView;
}
image.setImageBitmap(FlickrAdapterImage[position].getBitmap());
return image;
}
}
FlickrImage[] myFlickrImage;
/*
* FlickrQuery = FlickrQuery_url
* + FlickrQuery_per_page
* + FlickrQuery_nojsoncallback
* + FlickrQuery_format
* + FlickrQuery_tag + q
* + FlickrQuery_key + FlickrApiKey
*/
String FlickrQuery_url = "http://api.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&api_key=fdd73dc07613841fbe325b5103d673b7&user_id=65005067@N08&per_page=25&format=json";
String FlickrQuery_per_page = "&per_page=10";
String FlickrQuery_nojsoncallback = "&nojsoncallback=1";
String FlickrQuery_format = "&format=json";
String FlickrQuery_tag = "&tags=";
String FlickrQuery_key = "&api_key=";
// Apply your Flickr API:
// www.flickr.com/services/apps/create/apply/?
String FlickrApiKey = "fdd73dc07613841fbe325b5103d673b7";
final String DEFAULT_SEARCH = "flickr";
EditText searchText;
Button searchButton;
Gallery photoBar;
Bitmap bmFlickr;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.activityName = "AndroidFlickrActivity";
BT_debugger.showIt(activityName + ":onCreate");
//reference to base layout..
LinearLayout baseView = (LinearLayout)findViewById(R.id.baseView);
//setup background colors...
BT_viewUtilities.updateBackgroundColorsForScreen(this, this.screenData);
//setup background images..
if(backgroundImageWorkerThread == null){
backgroundImageWorkerThread = new BackgroundImageWorkerThread();
backgroundImageWorkerThread.start();
}
//setup navigation bar...
LinearLayout navBar = BT_viewUtilities.getNavBarForScreen(this, this.screenData);
if(navBar != null){
baseView.addView(navBar);
}
//inflate this screens layout file...
LayoutInflater vi = (LayoutInflater)thisActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View thisScreensView = vi.inflate(R.layout.flickr, null);
//add the view to the base view...
baseView.addView(thisScreensView);
searchText = (EditText)findViewById(R.id.searchtext);
searchText.setText(DEFAULT_SEARCH);
searchButton = (Button)findViewById(R.id.searchbutton);
photoBar = (Gallery)findViewById(R.id.photobar);
searchButton.setOnClickListener(searchButtonOnClickListener);
}
///////////////////////////////////////////////////
//activity life-cycle overrides
//onResume
@Override
public void onResume() {
super.onResume();
//Log.i("ZZ", thisActivityName + ":onResume");
tToast("onResume");
}
private void tToast(String s) {
Context context = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, s, duration);
toast.show();
}
//onPause
@Override
public void onPause() {
//Log.i("ZZ", thisActivityName + ":onPause");
super.onPause();
tToast("onPause");
}
//activity life-cycle overrides
///////////////////////////////////////////////////
private Button.OnClickListener searchButtonOnClickListener
= new Button.OnClickListener(){
public void onClick(View arg0) {
// TODO Auto-generated method stub
progressDialog = ProgressDialog.show(AndroidFlickrActivity.this,
"Progress", "Please Wait");
backgroundThread = new BackgroundThread();
backgroundThread.setRunning(true);
backgroundThread.start();
}};
private String QueryFlickr(String q){
String qResult = null;
String qString =
FlickrQuery_url
+ FlickrQuery_per_page
+ FlickrQuery_nojsoncallback
+ FlickrQuery_format
+ FlickrQuery_tag + q
+ FlickrQuery_key + FlickrApiKey;
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(qString);
try {
HttpEntity httpEntity = httpClient.execute(httpGet).getEntity();
if (httpEntity != null){
InputStream inputStream = httpEntity.getContent();
Reader in = new InputStreamReader(inputStream);
BufferedReader bufferedreader = new BufferedReader(in);
StringBuilder stringBuilder = new StringBuilder();
String stringReadLine = null;
while ((stringReadLine = bufferedreader.readLine()) != null) {
stringBuilder.append(stringReadLine + "\n");
}
qResult = stringBuilder.toString();
inputStream.close();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return qResult;
}
private FlickrImage[] ParseJSON(String json){
FlickrImage[] flickrImage = null;
bmFlickr = null;
String flickrId;
String flickrOwner;
String flickrSecret;
String flickrServer;
String flickrFarm;
String flickrTitle;
try {
JSONObject JsonObject = new JSONObject(json);
JSONObject Json_photos = JsonObject.getJSONObject("photos");
JSONArray JsonArray_photo = Json_photos.getJSONArray("photo");
flickrImage = new FlickrImage[JsonArray_photo.length()];
for (int i = 0; i < JsonArray_photo.length(); i++){
JSONObject FlickrPhoto = JsonArray_photo.getJSONObject(i);
flickrId = FlickrPhoto.getString("id");
flickrOwner = FlickrPhoto.getString("owner");
flickrSecret = FlickrPhoto.getString("secret");
flickrServer = FlickrPhoto.getString("server");
flickrFarm = FlickrPhoto.getString("farm");
flickrTitle = FlickrPhoto.getString("title");
flickrImage[i] = new FlickrImage(flickrId, flickrOwner, flickrSecret,
flickrServer, flickrFarm, flickrTitle);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flickrImage;
}
public class BackgroundThread extends Thread{
volatile boolean running = false;
int cnt;
void setRunning(boolean b){
running = b;
cnt = 10;
}
@Override
public void run() {
// TODO Auto-generated method stub
String searchQ = searchText.getText().toString();
String searchResult = QueryFlickr(searchQ);
myFlickrImage = ParseJSON(searchResult);
handler.sendMessage(handler.obtainMessage());
}
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
progressDialog.dismiss();
photoBar.setAdapter(new FlickrAdapter(AndroidFlickrActivity.this, myFlickrImage));
Toast.makeText(AndroidFlickrActivity.this,
"Images Loaded", Toast.LENGTH_LONG).show();
}
};
}
package com.windmill代理;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.Reader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入org.apache.http.HttpEntity;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.content.SharedReferences;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.Message;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.ViewGroup.LayoutParams;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Gallery;
导入android.widget.ImageView;
导入android.widget.LinearLayout;
导入android.widget.Toast;
公共类AndroidBlickPractivity扩展了BT_活动_库{
公共字符串thisActivityName=“Flickr”;
进行对话进行对话;
背景线背景线;
公共类FlickrImage{
字符串Id;
字符串所有者;
串秘密;
字符串服务器;
弦乐场;
字符串标题;
位图映射;
FlickrImage(字符串Id、字符串所有者、字符串机密、,
字符串(服务器、字符串场、字符串标题){
Id=_Id;
所有者=_所有者;
秘密=_秘密;
服务器=_服务器;
农场=_农场;
Title=_Title;
FlickrBitmap=预加载位图();
}
私有位图预加载位图(){
位图bm=null;
字符串FlickrPhotoPath=
"http://farm“+Farm+”.static.flickr.com/”
+服务器+“/”+Id+““+Secret+“_m.jpg”;
URL FlickrPhotoUrl=null;
试一试{
FlickrPhotoUrl=新URL(FlickrPhotoPath);
HttpURLConnection httpConnection
=(HttpURLConnection)FlickrPhotoUrl.openConnection();
httpConnection.setDoInput(true);
httpConnection.connect();
InputStream InputStream=httpConnection.getInputStream();
bm=BitmapFactory.decodeStream(inputStream);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回bm;
}
公共位图getBitmap(){
返回TMAP;
}
}
类FlickrAdapter扩展了BaseAdapter{
私人语境;
私人FlickrImage[]FlickrAdapterImage;;
FlickrAdapter(上下文c,FlickrImage[]fImage){
上下文=c;
FlickrAdapterImage=fImage;
}
public int getCount(){
//TODO自动生成的方法存根
返回flickrapterimage.length;
}
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回图像[位置];
}
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
图像视图图像;
if(convertView==null){
图像=新图像视图(上下文);
image.setLayoutParams(新的Gallery.LayoutParams(LayoutParams.MATCH_父级,LayoutParams.MATCH_父级));
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
设置填充(8,8,8,8);
}否则{
image=(ImageView)convertView;
}
image.setImageBitmap(FlickrAdapterImage[position].getBitmap());
返回图像;
}
}
FlickrImage[]我的FlickrImage;
/*
*FlickrQuery=FlickrQuery\u url
*+FlickrQuery\u每页
*+FlickrQuery\u nojsoncallback
*+FlickrQuery\u格式
*+FlickrQuery_标记+q
*+FlickrQuery_键+FlickrApiKey
*/
字符串FlickrQuery_url=”http://api.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&api_key=fdd73dc07613841fbe325b5103d673b7&user_id=65005067@N08&per_page=25&format=json”;
字符串FlickrQuery_per_page=“&per_page=10”;
字符串FlickrQuery_nojsoncallback=“&nojsoncallback=1”;
字符串FlickrQuery_format=“&format=json”;
字符串FlickrQuery_tag=“&tags=”;
字符串FlickrQuery_key=“&api_key=“”;
//应用Flickr API:
//www.flickr.com/services/apps/create/apply/?
字符串flickrapkey=“fdd73dc07613841fbe325b5103d673b7”;
最终字符串默认值\u SEARCH=“flickr”;
编辑文本搜索文本;
按钮搜索按钮;
画廊影吧;
位图bmr;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.activityName=“A