视图上的 Android 动态气泡

Posted

技术标签:

【中文标题】视图上的 Android 动态气泡【英文标题】:Android dynamic Bubbles on the view 【发布时间】:2017-01-02 05:15:59 【问题描述】:

谁能在可点击的android布局上制作动态气泡。

我的设计师想到的屏幕如下[![我所有的气泡都是分配给用户的一组任务。气泡的标签根据任务而变化][1]][1]

根据我的项目要求,颜色和半径将根据 api 响应发生变化。

您能否建议任何演示或示例。我用谷歌搜索了它,但我找不到这个答案。请指导我完成此操作。

【问题讨论】:

没有内置任何东西。你必须从头开始做这一切。应该不会太糟糕 - 在 Canvas 上绘制圆圈非常容易。研究如何制作自定义视图。 @GabeSechan 你能推荐一些例子吗? 你必须在画布上绘制所有视图。 @tpa 你能提供一些代码片段吗? 【参考方案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);

        

    


【讨论】:

伟大的作品,完美的作品。然后我的另一个疑问是我如何在这个圈子上给出点击方法,并为同一个圈子提供不同的颜色?【参考方案2】:

这是自定义圈子创建的方式,您可以参考各种链接在画布上动态创建圈子

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));
    


【讨论】:

感谢您。你能指导我如何在项目中实现这个 创建自定义视图,如 CustomView 创建构造函数并为位置 x、y 和半径传递参数。 调用CustomView对象创建圆 @siddesh 我的另一个疑问是我如何在这个圈子上给出点击方法,并为同一个圈子提供不同的颜色? android-coding.blogspot.in/2012/04/… 浏览此链接

以上是关于视图上的 Android 动态气泡的主要内容,如果未能解决你的问题,请参考以下文章

在android上动态创建视图和getWidth方法

Android 实现气泡布局/弹窗,可控制气泡尖角方向及偏移量

聊天气泡图片的动态拉伸适配与镜像

聊天气泡图片的动态拉伸适配与镜像

Android 实现气泡布局/弹窗,可控制气泡尖角方向及偏移量

如何在 android 中更改 EditText 气泡颜色(光标下)?