乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      android.graphics.Camera

       My鏡像站 2012-02-14
      android.graphics.Camera可以對(duì)圖像執(zhí)行一些比較復(fù)雜的操作,諸如旋轉(zhuǎn)與綻放。

      本文為練習(xí)Camera的使用。實(shí)現(xiàn)效果圖如下:
      test.gif

      Camera的處理結(jié)果只是生成一個(gè)Matrix,該Matrix用于Bitmap或Canvas繪制Bitmap時(shí)才能產(chǎn)生旋轉(zhuǎn)或縮放的效果。
      代碼如下:
      1. package lab.sodino.camera;

      2. import android.app.Activity;
      3. import android.graphics.Bitmap;
      4. import android.graphics.Camera;
      5. import android.graphics.Matrix;
      6. import android.graphics.drawable.BitmapDrawable;
      7. import android.os.Bundle;
      8. import android.util.Log;
      9. import android.widget.ImageView;
      10. import android.widget.SeekBar;
      11. import android.widget.SeekBar.OnSeekBarChangeListener;
      12. import android.widget.TextView;

      13. /**
      14. * @author Sodino E-mail:sodinoopen@hotmail.com
      15. * @version Time:2011-9-26 下午04:17:49
      16. */
      17. public class ActCamera extends Activity implements OnSeekBarChangeListener {
      18.         private Camera camera;
      19.         // views
      20.         private SeekBar seekbarXRotate;
      21.         private SeekBar seekbarYRotate;
      22.         private SeekBar seekbarZRotate;
      23.         private TextView txtXRotate;
      24.         private TextView txtYRotate;
      25.         private TextView txtZRotate;
      26.         private SeekBar seekbarXTranslate;
      27.         private SeekBar seekbarYTranslate;
      28.         private SeekBar seekbarZTranslate;
      29.         private TextView txtXTranslate;
      30.         private TextView txtYTranslate;
      31.         private TextView txtZTranslate;
      32.         private ImageView imgResult;
      33.         // integer params
      34.         private int rotateX, rotateY, rotateZ;
      35.         private int translateX, translateY, translateZ;

      36.         /** Called when the activity is first created. */
      37.         @Override
      38.         public void onCreate(Bundle savedInstanceState) {
      39.                 super.onCreate(savedInstanceState);
      40.                 setContentView(R.layout.main);
      41.                 // camera
      42.                 camera = new Camera();
      43.                 // initViews
      44.                 // rotate
      45.                 seekbarXRotate = (SeekBar) findViewById(R.id.seekbarXRotate);
      46.                 seekbarXRotate.setOnSeekBarChangeListener(this);
      47.                 seekbarYRotate = (SeekBar) findViewById(R.id.seekbarYRotate);
      48.                 seekbarYRotate.setOnSeekBarChangeListener(this);
      49.                 seekbarZRotate = (SeekBar) findViewById(R.id.seekbarZRotate);
      50.                 seekbarZRotate.setOnSeekBarChangeListener(this);
      51.                 txtXRotate = (TextView) findViewById(R.id.txtXRotate);
      52.                 txtYRotate = (TextView) findViewById(R.id.txtYRotate);
      53.                 txtZRotate = (TextView) findViewById(R.id.txtZRotate);
      54.                 // translate
      55.                 seekbarXTranslate = (SeekBar) findViewById(R.id.seekbarXTranslate);
      56.                 seekbarXTranslate.setOnSeekBarChangeListener(this);
      57.                 seekbarYTranslate = (SeekBar) findViewById(R.id.seekbarYTranslate);
      58.                 seekbarYTranslate.setOnSeekBarChangeListener(this);
      59.                 seekbarZTranslate = (SeekBar) findViewById(R.id.seekbarZTranslate);
      60.                 seekbarZTranslate.setOnSeekBarChangeListener(this);
      61.                 txtXTranslate = (TextView) findViewById(R.id.txtXTranslate);
      62.                 txtYTranslate = (TextView) findViewById(R.id.txtYTranslate);
      63.                 txtZTranslate = (TextView) findViewById(R.id.txtZTranslate);
      64.                 imgResult = (ImageView) findViewById(R.id.imgResult);
      65.                 // refresh
      66.                 refreshImage();
      67.         }

      68.         private void refreshImage() {
      69.                 // 獲取待處理的圖像
      70.                 BitmapDrawable tmpBitDra = (BitmapDrawable) getResources().getDrawable(R.drawable.honeycomb);
      71.                 Bitmap tmpBit = tmpBitDra.getBitmap();
      72.                 // 開始處理圖像
      73.                 // 1.獲取處理矩陣
      74.                 // 記錄一下初始狀態(tài)。save()和restore()可以將圖像過(guò)渡得柔和一些。
      75.                 // Each save should be balanced with a call to restore().
      76.                 camera.save();
      77.                 Matrix matrix = new Matrix();
      78.                 // rotate
      79.                 camera.rotateX(rotateX);
      80.                 camera.rotateY(rotateY);
      81.                 camera.rotateZ(rotateZ);
      82.                 // translate
      83.                 camera.translate(translateX, translateY, translateZ);
      84.                 camera.getMatrix(matrix);
      85.                 // 恢復(fù)到之前的初始狀態(tài)。
      86.                 camera.restore();
      87.                 // 設(shè)置圖像處理的中心點(diǎn)
      88.                 matrix.preTranslate(tmpBit.getWidth() >> 1, tmpBit.getHeight() >> 1);
      89.                 // 2.通過(guò)矩陣生成新圖像(或直接作用于Canvas)
      90.                 Log.d("ANDROID_LAB", "width=" + tmpBit.getWidth() + " height=" + tmpBit.getHeight());
      91.                 Bitmap newBit = null;
      92.                 try {
      93.                         // 經(jīng)過(guò)矩陣轉(zhuǎn)換后的圖像寬高有可能不大于0,此時(shí)會(huì)拋出IllegalArgumentException
      94.                         newBit = Bitmap.createBitmap(tmpBit, 0, 0, tmpBit.getWidth(), tmpBit.getHeight(), matrix, true);
      95.                 } catch (IllegalArgumentException iae) {
      96.                         iae.printStackTrace();
      97.                 }
      98.                 if (newBit != null) {
      99.                         imgResult.setImageBitmap(newBit);
      100.                 }
      101.         }

      102.         @Override
      103.         public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
      104.                 if (seekBar == seekbarXRotate) {
      105.                         txtXRotate.setText(progress + "゜");
      106.                         rotateX = progress;
      107.                 } else if (seekBar == seekbarYRotate) {
      108.                         txtYRotate.setText(progress + "゜");
      109.                         rotateY = progress;
      110.                 } else if (seekBar == seekbarZRotate) {
      111.                         txtZRotate.setText(progress + "゜");
      112.                         rotateZ = progress;
      113.                 } else if (seekBar == seekbarXTranslate) {
      114.                         translateX = progress - 100;
      115.                         txtXTranslate.setText(String.valueOf(translateX));
      116.                 } else if (seekBar == seekbarYTranslate) {
      117.                         translateY = progress - 100;
      118.                         txtYTranslate.setText(String.valueOf(translateY));
      119.                 } else if (seekBar == seekbarZTranslate) {
      120.                         translateZ = progress - 100;
      121.                         txtZTranslate.setText(String.valueOf(translateZ));
      122.                 }
      123.                 refreshImage();
      124.         }

      125.         @Override
      126.         public void onStartTrackingTouch(SeekBar seekBar) {

      127.         }

      128.         @Override
      129.         public void onStopTrackingTouch(SeekBar seekBar) {

      130.         }
      131. }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多