photoview图片显示

来源:互联网 发布:python 软件开发 编辑:程序博客网 时间:2024/05/16 11:55

1jar包http://download.csdn.net/detail/taoolee/9440794

2类结构
这里写图片描述
3效果
这里写图片描述
4类文件


public class SimpleSampleActivity extends Activity {    static final String PHOTO_TAP_TOAST_STRING = "Photo Tap! X: %.2f %% Y:%.2f %% ID: %d";    static final String SCALE_TOAST_STRING = "Scaled to: %.2ff";    private TextView mCurrMatrixTv;    private PhotoViewAttacher mAttacher;    private Toast mCurrentToast;    private Matrix mCurrentDisplayMatrix = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ImageView mImageView = (ImageView) findViewById(R.id.iv_photo);        mCurrMatrixTv = (TextView) findViewById(R.id.tv_current_matrix);        Drawable bitmap = getResources().getDrawable(R.drawable.wallpaper);        mImageView.setImageDrawable(bitmap);        // The MAGIC happens here!        mAttacher = new PhotoViewAttacher(mImageView);        // Lets attach some listeners, not required though!        mAttacher.setOnMatrixChangeListener(new MatrixChangeListener());        mAttacher.setOnPhotoTapListener(new PhotoTapListener());    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main_menu, menu);        return super.onCreateOptionsMenu(menu);    }    @Override    public void onDestroy() {        super.onDestroy();        // Need to call clean-up        mAttacher.cleanup();    }    @Override    public boolean onPrepareOptionsMenu(Menu menu) {        MenuItem zoomToggle = menu.findItem(R.id.menu_zoom_toggle);        assert null != zoomToggle;        zoomToggle.setTitle(mAttacher.canZoom() ? R.string.menu_zoom_disable : R.string.menu_zoom_enable);        return super.onPrepareOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.menu_zoom_toggle:                mAttacher.setZoomable(!mAttacher.canZoom());                return true;            case R.id.menu_scale_fit_center:                mAttacher.setScaleType(ScaleType.FIT_CENTER);                return true;            case R.id.menu_scale_fit_start:                mAttacher.setScaleType(ScaleType.FIT_START);                return true;            case R.id.menu_scale_fit_end:                mAttacher.setScaleType(ScaleType.FIT_END);                return true;            case R.id.menu_scale_fit_xy:                mAttacher.setScaleType(ScaleType.FIT_XY);                return true;            case R.id.menu_scale_scale_center:                mAttacher.setScaleType(ScaleType.CENTER);                return true;            case R.id.menu_scale_scale_center_crop:                mAttacher.setScaleType(ScaleType.CENTER_CROP);                return true;            case R.id.menu_scale_scale_center_inside:                mAttacher.setScaleType(ScaleType.CENTER_INSIDE);                return true;            case R.id.menu_scale_random_animate:            case R.id.menu_scale_random:                Random r = new Random();                float minScale = mAttacher.getMinimumScale();                float maxScale = mAttacher.getMaximumScale();                float randomScale = minScale + (r.nextFloat() * (maxScale - minScale));                mAttacher.setScale(randomScale, item.getItemId() == R.id.menu_scale_random_animate);                showToast(String.format(SCALE_TOAST_STRING, randomScale));                return true;            case R.id.menu_matrix_restore:                if (mCurrentDisplayMatrix == null)                    showToast("You need to capture display matrix first");                else                    mAttacher.setDisplayMatrix(mCurrentDisplayMatrix);                return true;            case R.id.menu_matrix_capture:                mCurrentDisplayMatrix = mAttacher.getDisplayMatrix();                return true;            case R.id.extract_visible_bitmap:                try {                    Bitmap bmp = mAttacher.getVisibleRectangleBitmap();                    File tmpFile = File.createTempFile("photoview", ".png",                            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));                    FileOutputStream out = new FileOutputStream(tmpFile);                    bmp.compress(Bitmap.CompressFormat.PNG, 90, out);                    out.close();                    Intent share = new Intent(Intent.ACTION_SEND);                    share.setType("image/png");                    share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tmpFile));                    startActivity(share);                    Toast.makeText(this, String.format("Extracted into: %s", tmpFile.getAbsolutePath()), Toast.LENGTH_SHORT).show();                } catch (Throwable t) {                    t.printStackTrace();                    Toast.makeText(this, "Error occured while extracting bitmap", Toast.LENGTH_SHORT).show();                }                return true;        }        return super.onOptionsItemSelected(item);    }    private class PhotoTapListener implements OnPhotoTapListener {        @Override        public void onPhotoTap(View view, float x, float y) {            float xPercentage = x * 100f;            float yPercentage = y * 100f;            showToast(String.format(PHOTO_TAP_TOAST_STRING, xPercentage, yPercentage, view == null ? 0 : view.getId()));        }    }    private void showToast(CharSequence text) {        if (null != mCurrentToast) {            mCurrentToast.cancel();        }        mCurrentToast = Toast.makeText(SimpleSampleActivity.this, text, Toast.LENGTH_SHORT);        mCurrentToast.show();    }    private class MatrixChangeListener implements OnMatrixChangedListener {        @Override        public void onMatrixChanged(RectF rect) {            mCurrMatrixTv.setText(rect.toString());        }    }}

其他代码下载http://download.csdn.net/detail/taoolee/9443814

2 0
原创粉丝点击