Android视图上的动态气泡

3

有人能告诉我如何在可点击的Android布局上制作动态气泡吗?

我的设计师为屏幕想到了以下内容 [![在图片中,所有气泡都是分配给用户的一些任务。气泡的标签会根据任务而变化][1]][1]

根据我的项目需求,颜色和半径将根据API响应而改变。

请问是否有任何演示或示例可供参考?我已经搜索过了,但找不到答案。请指导我完成这个任务。


这方面没有内置的功能。你需要从头开始做。不过应该不会太难——在画布上绘制圆形非常容易。研究一下如何制作自定义视图。 - Gabe Sechan
@GabeSechan,你能否提供一些相关示例? - Pranav MS
你必须在画布上绘制所有的视图。 - Amarjit
@tpa 你能提供一些关于这个的代码片段吗? - Pranav MS
2个回答

1
这是如何自定义创建圆的过程,您可以参考各种链接来动态地在画布上创建圆形。
public class CustomView extends View {

    private Paint paint;

    public CustomView(Context context) {
        super(context);

        // create the Paint and set its color        
        paint = new Paint();
        paint.setColor(Color.GRAY);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.BLUE);
        canvas.drawCircle(200, 200, 100, paint);
    }

}

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new CustomView(this));
    }

}

谢谢您。请问您能指导我如何在项目中实现这个吗? - Pranav MS
创建一个自定义视图,例如CustomView,创建一个构造函数并传递位置x、y和半径参数。 - siddhesh
通过调用CustomView对象创建圆形。 - siddhesh
@siddesh 我还有一个疑问,我该如何在这些圆圈上添加点击方法,并为它们设置不同的颜色? - Pranav MS
请访问此链接:http://android-coding.blogspot.in/2012/04/draw-circle-on-canvas-canvasdrawcirclet.html - siddhesh
让我们在聊天中继续这个讨论 - Pranav MS

1

已经有一个答案发布了,我也为你尝试了一下。希望你也能从这里得到一些帮助:

public class BubbleBackgroundDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        View view = new CustomView(this);
//        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(this.getWidth(),
//                ViewGroup.LayoutParams.MATCH_PARENT);
//        view.setLayoutParams(lp);


        setContentView(view);
    }

    public class CustomView extends View {

        private Paint paint;
        int screenWidth, screenHeight;



        public CustomView(Context context) {
            super(context);
            DisplayMetrics displaymetrics = new DisplayMetrics();

            getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);


           screenWidth = displaymetrics.widthPixels;
             screenHeight = displaymetrics.heightPixels;

            // create the Paint and set its color
            paint = new Paint();
            paint.setColor(Color.GRAY);

        }

        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.BLUE);
            canvas.drawCircle(200, 200, 100, paint);


            canvas.drawCircle(screenWidth-200, 200, 100, paint);

            canvas.drawCircle(screenWidth/2, screenHeight/2, 300, paint);

            canvas.drawCircle(screenWidth-200, screenHeight-200, 100, paint);

            canvas.drawCircle(200, screenHeight-200, 100, paint);

        }

    }

}

做得好,它完美地运作了。然后我的另一个疑问是如何在这些圆圈上添加点击方法,并为它们设置不同的颜色? - Pranav MS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接