开发者

Android - How to draw a letter at a specific point?

I want to fill the screen with a 100 different letters in random positions. On the iPhone I just created a bunch of UILabels set their x and y positions and then used animations to move them about.

On Android it doesn't look like I can add a TextView to my view and specify its X and Y. Is there开发者_JAVA技巧 a way to do this?

    View gameView = findViewById(R.id.gameboard);
    tv = new TextView(gameView.getContext());
    tv.setText("A");
    tv.setWidth(w); tv.setHeight(h);
    // How to set the X and Y?

EDIT: The solution was to use AbsoluteLayout:

    AbsoluteLayout al = (AbsoluteLayout)findViewById(R.id.gb_layout);
    tv = new TextView(this);
    AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(
            AbsoluteLayout.LayoutParams.WRAP_CONTENT,
            AbsoluteLayout.LayoutParams.WRAP_CONTENT,10,10);        
    params.x = 50;
    params.y = 50;
    al.addView(tv, params);

and to move it base on MotionEvent me:

    AbsoluteLayout.LayoutParams p = new AbsoluteLayout.LayoutParams(
            AbsoluteLayout.LayoutParams.WRAP_CONTENT,
            AbsoluteLayout.LayoutParams.WRAP_CONTENT,(int)me.getX(), (int)me.getY());
    mTV.setLayoutParams (p);


I think you are making a game and for this you should look into SurfaceView here is an good example then

1...if you look into code there is onDraw method where you will get the width of screen and height

2...Now taking this width and height as seed for random generator get x and y position.

3...Iterate through point 2 100 times and you will get the desired result


You can use a FrameLayout for this. Set each TextView's background to transparent and add it to the FrameLayout. Make each TextView, and the FrameLayout, fill their parent. The FrameLayout places all its child views at (0,0). To move letters around, just change the top and left padding of the corresponding TextView.


In android positioning child views is the responsibility of the layout class.

You need to create a custom.layout and overide the onLayout method. In this method you can iterate through all the child views calling View.layout(left,top,right,bottom) on each child.

i found this example code whilst trawling the net : https://gist.github.com/882650

You should also check out view.setTranslationX (and Y) which might be exactly what you need


I'm not entirely sure how you'd go about doing this in code, but you need to use an absolute layout as your root element. (edit: Do not use absolute layout, as it was pointed out that it is deprecated. The closest alternative seems to be RelativeLayout.)

The properties in the XML format for the absolute layout coordinates are layout_x and layout_y.

edit: A little research is saying you need to be using setLayoutParams, but my Eclipse IDE is not working properly, so unfortunately I can't test exactly what you're looking for.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜