Уважаемый, я могу показывать изображение из URL-адресов, означает, что URL-адреса хранятся в массиве, и у меня есть две кнопки "Следующий", "Назад" для просмотра изображения один за другим, когда я нажимаю на изображение кнопки, загружаются с сервера как ответ теперь я хочу показать индикатор выполнения, когда изображение идет вниз по серверу, и когда ответ приходит, тогда индикатор прогресса скрывает автоматически menas show progreebar до тех пор, пока ответ не будет отображаться на экране, а когда закончится действие progreebar изображения... так, как это сделать мой кусок кода для показа изображения один за другим при нажатии кнопки ниже... пожалуйста, измените в моем коде, если возможно bcoz, я новичок в android и java, а... намного больше...
public class artspacedetailShowingNow extends Activity implements OnClickListener {
private int imageCounter = 0;
private ImageView imageLoader;
private String[] imageList = {"http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/martin_di_girolamo._diosas/198915-1-esl-AR/MARTIN_DI_GIROLAMO._Diosas.jpg","http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/jorge_macchi._la_espera/198929-1-esl-AR/JORGE_MACCHI._La_espera.jpg","http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/leon_ferrari._hongo_nuclear/198950-1-esl-AR/LEON_FERRARI._Hongo_Nuclear.jpg","http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/martin_sastre._fiebre/198922-1-esl-AR/MARTIN_SASTRE._Fiebre.jpg"};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showingnow);
imageLoader = (ImageView) findViewById(R.id.imageLoader);
Button next = (Button) findViewById(R.id.next);
Button back = (Button) findViewById(R.id.back);
next.setOnClickListener(this);
back.setOnClickListener(this);
back.setEnabled(false);
this.loadImage(imageList[imageCounter]);
}
@Override
public void onClick(View v)
{
String imagePath = null;
switch (v.getId())
{
case R.id.next:
Log.i("Tag","tag");
if(imageCounter < imageList.length)
{
imageCounter++;
imagePath = imageList[imageCounter];
if (imageCounter==(imageList.length)-1)
{
{
Button next=(Button)findViewById(R.id.next);
next.setEnabled(false);
}
}
else
{
Button back=(Button)findViewById(R.id.back);
back.setEnabled(true);
}
}
break;
case R.id.back:
if(imageCounter > 0)
{
imageCounter--;
imagePath = imageList[imageCounter];
if (imageCounter==0)
{
Button back=(Button)findViewById(R.id.back);
back.setEnabled(false);
}
else
{
Button next=(Button)findViewById(R.id.next);
next.setEnabled(true);
}
}
break;
}
this.loadImage(imagePath);
}
private void loadImage(String imagePath)
{
try {
URL aURL = new URL(imagePath);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm = BitmapFactory.decodeStream(bis);
imageLoader.setImageBitmap(bm);
imageLoader.setImageBitmap(bm);
}
}
проверьте это.
public class artspacedetailShowingNow extends Activity implements OnClickListener {
private int imageCounter = 0;
private ImageView imageLoader;
private ProgressDialog bar;
private String[] imageList = {"http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/martin_di_girolamo._diosas/198915-1-esl-AR/MARTIN_DI_GIROLAMO._Diosas.jpg","http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/jorge_macchi._la_espera/198929-1-esl-AR/JORGE_MACCHI._La_espera.jpg","http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/leon_ferrari._hongo_nuclear/198950-1-esl-AR/LEON_FERRARI._Hongo_Nuclear.jpg","http://www.artealdiaonline.com/var/artealdia_com/storage/images/argentina/directorio/galerias/ruth_benzacar/artistas/martin_sastre._fiebre/198922-1-esl-AR/MARTIN_SASTRE._Fiebre.jpg"};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showingnow);
imageLoader = (ImageView) findViewById(R.id.imageLoader);
Button next = (Button) findViewById(R.id.next);
Button back = (Button) findViewById(R.id.back);
next.setOnClickListener(this);
back.setOnClickListener(this);
back.setEnabled(false);
new ImageDownload().execute(imageList[imageCounter]);
//this.loadImage(imageList[imageCounter]);
}
@Override
public void onClick(View v)
{
String imagePath = null;
switch (v.getId())
{
case R.id.next:
Log.i("Tag","tag");
if(imageCounter < imageList.length)
{
imageCounter++;
imagePath = imageList[imageCounter];
if (imageCounter==(imageList.length)-1)
{
{
Button next=(Button)findViewById(R.id.next);
next.setEnabled(false);
}
}
else
{
Button back=(Button)findViewById(R.id.back);
back.setEnabled(true);
}
}
break;
case R.id.back:
if(imageCounter > 0)
{
imageCounter--;
imagePath = imageList[imageCounter];
if (imageCounter==0)
{
Button back=(Button)findViewById(R.id.back);
back.setEnabled(false);
}
else
{
Button next=(Button)findViewById(R.id.next);
next.setEnabled(true);
}
}
break;
}
new ImageDownload().execute(imagePath);
//this.loadImage(imagePath);
}
private void loadImage(String imagePath)
{
try {
URL aURL = new URL(imagePath);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm = BitmapFactory.decodeStream(bis);
imageLoader.setImageBitmap(bm);
imageLoader.setImageBitmap(bm);
}
private class ImageDownload extends AsyncTask<String , Void, Void>(){
@Override
protected Void doInBackground(String... params) {
loadImage(params[0]);
return null;
}
@Override
protected void onPostExecute(Void result) {
bar.dismiss();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
bar = new ProgressDialog(activity);
bar.setMessage("Processing...");
bar.setIndeterminate(true);
super.onPreExecute();
}
}
}
для отображения индикатора прогресса до загрузки изображения. Попробуйте использовать метод asyncTask.
здесь пример кода для него.
private class ImageDownload extends AsyncTask<String , Void, Void>(){
@Override
protected Void doInBackground(String... params) {
loadImage(params[0]);
return null;
}
@Override
protected void onPostExecute(Void result) {
bar.dismiss();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
bar = new ProgressDialog(activity);
bar.setMessage("Processing...");
bar.setIndeterminate(true);
super.onPreExecute();
}
}
создать локальную переменную ProgressBar;
замените эту строку new ImageDownload().execute(imageURL);
вместо loadImage(imageURL);
для получения дополнительной информации о asyncTask, затем перейдите сюда.
Проверить, когда изображение загружается с сервера, размещать ImageView и progressdialog в одном месте, Первый набор progressdialog visibile → true и visview → false. затем начните загрузку изображения с сервера, используйте обработчик и узнайте, когда изображение доступно с сервера. и это время задает прогрессдиалоговой видимости → false и видимость видимого изображения → true
Используйте концепцию Handler в своем коде для этого.
вот код.
ProgressDialog _progressDialog = ProgressDialog.show(this,"Saving Data","Please wait......");
settintAdater();
private void settingAdater(){
Thread _thread = new Thread(){
public void run() {
Message _msg = new Message();
_msg.what = 1;
// Do your task where you want to rerieve data to set in adapet
YourCalss.this._handle.sendMessage(_msg);
};
};
_thread.start();
}
Handler _handle = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what){
case 1:
_progressDialog.dismiss();
listview.setAdapter();
}
}
}