android - 在 Android 中显示连续图像

标签 android video bitmap

我想在一秒钟内显示大约 30 张照片,所以它们会像视频一样显示。

我在 while(TRUE) 循环中使用了 Android ImageView,但是 ImageView 没有像我预期的那样改变。

ImageView每秒钟换一张图片,不知道有没有别的办法

显示我的照片?

照片是用Udp从相机传过来的,我先要存到一个buffer里

比显示。

上述部分导致 ImageView 延迟。

部分代码是这样的

  public void receiveVideoRawData() throws IOException{
        socket_video = new DatagramSocket();
        byte[] buf_rcv = new byte[153600];
        DatagramPacket rawData = new DatagramPacket(buf_rcv, buf_rcv.length);
        Bitmap  image = null;
        socket_video.receive(rawData);//receive a raw data
        image = readMyRawData.readUINT_RGBImage(buf_rcv);//decode the raw data
        ByteArrayOutputStream blob = new ByteArrayOutputStream();
        Bitmap pBitmap = image ;
        pBitmap.compress(Bitmap.CompressFormat.JPEG, 1, blob);
        byte[] bitmapdata = blob.toByteArray();
        ardrone_Frame = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata.length);
      }

显示部分

  Thread thread=new Thread  (new Runnable() {
     Message message;
    String obj="run";
    int i;
    long start;
    @Override
    public void run() {   
        // TODO Auto-generated method stub
         Log.e("///enter thread ","THREAD");
    while(true){     
        try { 
            Log.e("enter_video_thread","enter_video_thread");
            receiveVideoRawData();
            Log.e("///receiveVideoRawData ","receiveVideoRawData");
            message = handler.obtainMessage(1,obj);
                    handler.sendMessage(message);
            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
}

});
public Handler handler = new Handler(){ 
    @Override
    public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String MsgString = (String)msg.obj;
            if (MsgString.equals("run"))
            {         Log.e("///enter handler ","HANDLER");                                           
                          Toast.makeText(ArDroneMain.this,"save image ",Toast.LENGTH_SHORT).show();
                          //Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ "/ArdroneVideo.jpg");
                          myImageView.setImageBitmap(ardrone_Frame);    ///Show the image    
                          Toast.makeText(ArDroneMain.this,"show image",Toast.LENGTH_SHORT).show();
             }

    }
};

最佳答案

你可以把它做成动画。 为您的动画制作图像并保存在 png 格式的文件夹中。 使用下面的代码为这些图像制作动画

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true">
 <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
 <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
 <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
 </animation-list>

然后

AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
  rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
  rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}

public boolean onTouchEvent(MotionEvent event) {
  if (event.getAction() == MotionEvent.ACTION_DOWN) {
    rocketAnimation.start();
    return true;
  }
  return super.onTouchEvent(event);
}

关于android - 在 Android 中显示连续图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15611611/

相关文章:

java - 如何使用 JsonReader 解析嵌套的键和值?

android - 如何在android中的通知中添加按钮?

android - dagger2 中的@Provide 和@Inject 有什么区别?

android - 适用于 IOS 和 Android 的支付网关

react-native - 选择大型视频文件 react native 博览会图像选择器

c++ - ffmpeg如何高效解码视频帧?

video - 了解ffmpeg输入流信息

actionscript-3 - AS3 - 正好有 23 个空的 Alpha channel ,下面的图像停止绘制

android - Bitmap.Options.inSampleSize 应该如何工作?

c# - 打印带有方形框的位图,这样