0

何らかのアクションが発生したときに画面に泡が浮かぶようにしたいAndroidアプリケーションを作成しようとしています。誰かがここで私を助けてくれませんか。私は過去4日間頭を骨折していますが、それを補うことができませんでした。だからここで私を助けてください。前もって感謝します。

4

3 に答える 3

2

ImageViewsを使用する代わりに、ユースケースでは、Canvasを使用して自分で描画を処理することをお勧めします。

背景が透明なキャンバスをフルスクリーンで描画します。ビットマップの配列を作成し(描画する画像ごとに1つ、サークルマスクを使用してバブルの形にすることを忘れないでください。メモリの問題に注意してください)、さまざまな位置で画面に描画します。

カスタムRNGアルゴリズムを使用して、ビットマップの適切な位置を生成し、それらをキャンバスに描画します。スレッドを使用してアニメーションを処理します。

円形のトリミングされたビットマップを生成するためのコードは次のとおりです

int targetWidth = 100;
    int targetHeight = 100;
    Bitmap targetBitmap = Bitmap.createBitmap(
        targetWidth,
        targetHeight,
        Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(targetBitmap);
    Path path = new Path();
    path.addCircle(
        ((float)targetWidth - 1) / 2,
        ((float)targetHeight - 1) / 2,
        (Math.min(((float)targetWidth), ((float)targetHeight)) / 2),
        Path.Direction.CCW);
    canvas.clipPath(path);
    Bitmap sourceBitmap = BitmapFactory.decodeResource(
        getResources(),
        R.drawable.my_image);
    canvas.drawBitmap(
        sourceBitmap,
        new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight()),
        new Rect(0, 0, targetWidth, targetHeight),
        null);
    ImageView imageView = (ImageView)findViewById(R.id.my_image_view);
    imageView.setImageBitmap(targetBitmap);

もちろん、ImageViewで設定する代わりに、このコードを変更して、ビットマップをキャンバスに描画する必要があります。ビットマップを1回トリミングしてから、トリミングした画像をビットマップの配列に配置する方が効率的です。

于 2012-12-13T04:46:07.747 に答える
1

このコードを使用して、実行時にimageviewの位置を変更します

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
        layoutParams.setMargins(left, top, righ, bottom);
        yourImageView.setLayoutParams(layoutParams);
于 2012-12-13T04:20:44.467 に答える
0

この機能は、Androidのライブ壁紙を使用してのみ実現できます。Andengineで多くのフローティングオブジェクトのライブペーパーを作成しました!:)混乱があれば、さらに私に尋ねることができます

于 2012-12-13T03:52:51.413 に答える