5

私が現在書いているプログラムには、単純な画像エディターが必要です。基本的に、ユーザーはギャラリーから画像を選択するだけで、このエディターに移動します。選択すると、画像エディター アクティビティが作成され、ユーザーは回転、明るさの調整、ズームなどの簡単な編集操作を実行できるようになります。

現時点では、前述の機能を比較的簡単に実装することができました。私の問題は、問題の画像を動的に追加することにありますImageView。多くの人が知っているかもしれません。Binder トランザクション バッファの固定サイズは現在 1Mb に制限されており、プロセスで進行中のすべてのトランザクションで共有されます。したがって、ビットマップの圧縮バージョンを ImageView にロードすることしかできず、これはかなり大きな問題を引き起こします (私のプログラムは主にタブレットで使用するように設計されています)。私はこの問題について重要な調査を行い、基本的にビットマップをいくつかの小さなビットマップに分割し、それらをいくつかの ImageView に配置して、 (このスレッドBitmapRegionDecoderで提案されているように)を使用して 1 つの連続した画像の錯覚を作成できることを発見しました)。これにより、大きな画像を表示することができましたが、 の複数のインスタンスを使用してズーム機能を実装する方法がわかりませんImageView。これを行うための比較的簡単な方法はありますか?

4

2 に答える 2

3

これを試しましたか?options.inJustDecodeBounds を true に設定する必要があります。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType = options.outMimeType;

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

于 2012-12-27T17:03:12.480 に答える
3

Google I/Oのこのビデオをご覧ください。画像編集機能を備えた高度なギャラリー アプリを開発しています。

アプリケーションのソース コードは、こちらからダウンロードできます。これは、画像編集用のアクティビティを開く方法です。

private OnItemClickListener mPhotoClickListener = new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // User clicked on photo, open our viewer
        final Intent intent = new Intent(AlbumActivity.this, PhotoActivity.class);
        final Uri data = ContentUris.withAppendedId(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
        intent.setData(data);
        startActivity(intent);
    }
};

ギャラリーには、画像編集機能も実装されています。コードが役立つ場合があります。

于 2012-12-27T16:03:55.857 に答える