Android中的图像和视频滑块

时间:2014-03-29 09:32:52

标签: java android eclipse android-imageview

我正在创建一个具有异构布局的Android应用程序。

该应用程序有一个登录页面,用户通过输入其许可证密钥进行登录。验证登录后,用户将转移到下一个屏幕。

在下一个屏幕上,我们显示了一个滑块。

问题是我们想在一个滑块中显示图像和视频。因此,在图像之后可能会出现视频,或者在某些图像之后可能会出现视频。

现在真正的问题是滑块会跳过所有图像并仅显示视频。

我们希望以3秒的间隔显示图像,如果视频出现则应停止滑块并播放整个视频,然后继续下一张幻灯片。

以下是我们正在创建的应用的代码。

package com.cd.layout;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.RelativeLayout;


@SuppressLint("NewApi")
public class MainActivity extends Activity  {

    private static final int BUTTON_5 = 5;
    List<String> image_ext = Arrays.asList("png","jpeg");
    List<String> video_ext = Arrays.asList("wmv","mp4");
    private int region = 1;
    Bitmap bm;
    String [] splits;   
    String [] media ;
    ArrayList<String> media_path = new ArrayList<String>();
    ArrayList<String> media_path1 = new ArrayList<String>();
    ArrayList<String> media_type = new ArrayList<String>();
    ArrayList<String> duration = new ArrayList<String>();
    int p = 0 ;
    String media_info [] = null;
    String response_data = null;
    int count = 0;
    int i = 0;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      
        generateView();
    }
    public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
        Bitmap bitmap = null;
        InputStream in = null;
        try {
            in = OpenHttpConnection(URL);
            bitmap = BitmapFactory.decodeStream(in, null, options);
            Log.i("bitmap",bitmap.toString());
            in.close();
        } catch (IOException e1) {
        }
        return bitmap;
    }
    private static InputStream OpenHttpConnection(String strURL)
            throws IOException {
        InputStream inputStream = null;
        URL url = new URL(strURL);
        URLConnection conn = url.openConnection();

        try {
            HttpURLConnection httpConn = (HttpURLConnection)conn;
            httpConn.setRequestMethod("GET");
            httpConn.connect();

            if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                inputStream = httpConn.getInputStream();
            }
        } catch (Exception ex) {
        }
        return inputStream;
    }
    private void generateView() {   

        final CompositeView View7 = new CompositeView(this);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
        .permitAll().build();       
        StrictMode.setThreadPolicy(policy);
        final BitmapFactory.Options bmOptions;
        bmOptions = new BitmapFactory.Options();
         final MediaController mediaController = new MediaController(this);
        bmOptions.inSampleSize = 1;
        if(region>0) //images/upload/videos/VID-20140111-WA0002.mp4=mp4=00:00:00
        {
            response_data = "images/upload/images/Penguins.jpg=jpeg=00:00:05,images/upload/images/Jellyfish.jpg=jpeg=00:00:05,images/upload/videos/VID-20140111-WA0002.mp4=mp4=00:00:00";   
            media = response_data.split(",");
            for(String s : media)
            {
                media_info = s.split("=");                      
                media_path.add(media_info[0]);
                media_type.add(media_info[1]);
                duration.add(media_info[2]);
            }

            for(p = 0 ; p<=media_type.size()-1; p++)
            {
                if(image_ext.contains(media_type.get(p)))
                {       
                    View7.getImageView().invalidate();
                    View7.getImageView().setVisibility(View.VISIBLE);
                    View7.getVideoView().setVisibility(View.GONE);
                    String url = "http://test.com/".concat(media_path.get(p));  //we have removed the live site URL which fetched the video and images and entered the dummy link   
                    Log.i("Image Name",url);
                    final Bitmap bm = loadBitmap(url, bmOptions);   
                    new Handler().postDelayed(new Runnable() {  
                        @Override
                        public void run() { 

                            View7.getImageView().setImageBitmap(bm);
                            View7.setId(BUTTON_5);  
                        }
                     }, 50000); 
                    View7.getImageView().setImageBitmap(bm);
                    View7.setId(BUTTON_5);  
                }
                else
                {
                    if(video_ext.contains(media_type.get(p)))
                    {                   
                        View7.getVideoView().invalidate();
                        View7.getVideoView().setVisibility(View.VISIBLE);
                        View7.getImageView().setVisibility(View.GONE);
                        String videoToPlay = "http://test.com/".concat(media_path.get(p)); //we have removed the live site URL which fetched the video and images and entered the dummy link
                        Log.i("Image Name",videoToPlay); 
                        View7.getVideoView().setVideoURI(Uri.parse(videoToPlay));
                        View7.getVideoView().setMediaController(new MediaController(this));
                        View7.getVideoView().setFocusable(true);
                        View7.getVideoView().start();
                    }
                }               
            }   
            region --;
        }       
    final RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main_layout);

        ViewTreeObserver vto = mainLayout.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @SuppressWarnings("deprecation")
            @Override
            public void onGlobalLayout() {
                final int oneUnitWidth = mainLayout.getMeasuredWidth() / 8;
                final int oneUnitHeight = mainLayout.getMeasuredHeight() / 4;
                String str = "348:243:320:240:";
                splits = str.split(":");
                count = splits.length;
                if(count!=0)
                {
                    final RelativeLayout.LayoutParams weatherParams = new RelativeLayout.LayoutParams(
                            Integer.parseInt(splits[i]), Integer.parseInt(splits[i+1]));

                    weatherParams.setMargins(0, 2, 0, 2);
                    View7.setLayoutParams(weatherParams);
                    count = count - 2;
                    i = i + 2;
                }
                else 
                {
                    final RelativeLayout.LayoutParams weatherParams = new RelativeLayout.LayoutParams(
                            320, 240);

                    weatherParams.setMargins(0, 2, 0, 2);
                    View7.setLayoutParams(weatherParams);
                }



                ViewTreeObserver obs = mainLayout.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
            }
        });

        mainLayout.addView(View7);


    }

}

感谢任何帮助..!

0 个答案:

没有答案