开发自定义语音泡沫

时间:2011-07-02 12:53:59

标签: android

我是Android应用程序开发的新手。我正在构建一个Android应用程序,用户需要能够在现有图像上添加语音泡泡(想想漫画)。我对如何实现这个问题有一些疑问,

  • 我应该构建自定义组件吗?你能帮我构建合适的xml吗?
  • 允许用户使用触摸移动语音气泡 - 任何指针或示例都会很棒!
  • 还要让他根据文本的数量调整语句大小 - 任何指针或示例都会很棒!
  • 最后他应该能够在讲话泡泡中添加文字!!这个气泡和具有不同背景的文本视图相同吗?

我需要你的帮助!!

3 个答案:

答案 0 :(得分:3)

这是一个非常广泛的问题。我的回答是快速运行,但我会如何根据视图亲自处理语音泡沫。

在Android平台上,通常使用View对象的混合来表示屏幕上的任何类型的信息。例如,如果显示图像,则使用ImageView。要显示项目列表,它是ListView。有许多标准类型的视图,出于不同的目的,系统具有显示不同类型信息的标准。您通常会使用这些视图的组合来构建UI屏幕。

通常,您需要创建自己的View子类。如果要绘制某种图形,即在向Canvas绘制矢量图形时,通常可以执行此操作。例如,如果您想使用线条Path()对象绘制语音气泡(例如绘制椭圆和线条,使用黑色笔触和白色填充,以形成对话框泡泡),您可以创建扩展View的SpeechBubbleView。在其onDraw()方法中,您将绘制语音气泡图形。另一方面,您可能希望使用位图而不是绘制它来表示您的语音气泡。然后,无论您何种方式绘制语音气泡,都需要在其中插入文本 - 可能使用TextView。但是将它中的气泡和文本表示为单个View对象会不会更好?是的,所以您可能要做的是在ViewGroup中包含您的语音气泡图形和TextView - ViewGroup是一种可以保存子视图的View。您可能使用的ViewGroup的特定子类是RelativeLayout,它是允许其子视图重叠的View。因此,您将拥有扩展RelativeLayout的SpeechBubbleView,其子视图可能是TextView和包含语音气泡位图的ImageView。

至于如何在图像上叠加您的语音气泡,您可能会再次使用RelativeLayout。在布局XML文件中,主父容器将是RelativeLayout。在那个子视图中,View可能是一个ImageView,它包含用户想要放置语音气泡的位图。然后,进一步的子视图将是您的SpeechBubbleViews。

至于拖动气泡,可以在Activity中使用OnTouchListener来实现。我有一些拖放代码在我现在打开的当前项目中工作;我可能会为你复制并粘贴一些内容,但说实话,我认为这是一个单独的,更具体的问题,你需要首先掌握更多的基础知识。

你的问题是一个非常广泛的问题,并且有一个很多的理由可以覆盖,但希望这些指针很有用。

答案 1 :(得分:0)

我认为最简单的方法(注意:不一定是最好的)方法是使用9 patch语音气泡图像,然后将其设置为TextView的背景。您可以添加文本,如果您正确构建9补丁,则应自动调整所有内容的大小。不幸的是,我在Android中没有太多拖放经验,但它不应该太难。

答案 2 :(得分:0)

  

Paint paint = new Paint();
  paint.setColor(Color.BLACK);
  paint.setAntiAlias(真);
  paint.setStrokeWidth(2);
  paint.setStyle(Paint.Style.STROKE);
  路径路径=新路径();
  path.moveTo(myPath [0] .x,myPath [0] .y);
  for(int i = 1; i< myPath.length; i ++){
          path.lineTo(myPath [i] .x,myPath [i] .y);
  }
  path.close();
  canvas.drawPath(path,paint);

使用this.maybe有用 但你需要自己定制

相关问题