将一个Activity分割成两部分,每个部分显示一个自定义View

来源:互联网 发布:pdf合并软件在线 编辑:程序博客网 时间:2024/06/04 19:39

最近刚开始学习Android开发,在练习写一个自定义View时就想能否把两个自定义View塞到一个Activity里。由于之前看的一直是SetContentView,也就没能实现,后来发现AddView可以实现,在这里记录一下,怕自己以后忘记了

布局文件:

<LinearLayout     android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">    <LinearLayout android:id="@+id/zone1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_weight="1">            </LinearLayout>    <LinearLayout android:id="@+id/zone2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_weight="1">            </LinearLayout>    </LinearLayout>
代码段:

package com.example.aaatest;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.FontMetrics;import android.graphics.Path;import android.graphics.RectF;import android.view.Display;import android.view.Menu;import android.view.View;import android.widget.LinearLayout;public class MainActivity extends Activity {LinearLayout zone1;LinearLayout zone2;public int mScreenWidth=0;public int mScreenHeight=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);zone1=(LinearLayout) findViewById(R.id.zone1);zone2=(LinearLayout) findViewById(R.id.zone2);Display display = getWindowManager().getDefaultDisplay();        mScreenWidth  = display.getWidth();        mScreenHeight = display.getHeight();        FontView f=new FontView(this);//绘制String        GeometryView g=new GeometryView(this);        zone1.addView(f);        zone2.addView(g);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}//绘制String class FontView extends View {        public final static String STR_WIDTH = "获取字符串宽为:";         public final static String STR_HEIGHT = "获取字体高度为:";         Paint mPaint = null;                public FontView(Context context) {            super(context);            mPaint = new Paint();        }        @Override        protected void onDraw(Canvas canvas) {            //设置字符串颜色            mPaint.setColor(Color.WHITE);            canvas.drawText("当前屏幕宽" + mScreenWidth, 0, 30, mPaint);            canvas.drawText("当前屏幕高"+ mScreenHeight, 0, 60, mPaint);            //设置字体大小            mPaint.setColor(Color.RED);            mPaint.setTextSize(18);            canvas.drawText("字体大小为18", 0, 90, mPaint);            //消除字体锯齿            mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);            canvas.drawText("消除字体锯齿后", 0, 120, mPaint);            //获取字符串宽度            canvas.drawText(STR_WIDTH + getStringWidth(STR_WIDTH), 0, 150, mPaint);            //获取字体高度            canvas.drawText(STR_HEIGHT + getFontHeight(), 0, 180, mPaint);            //从string.xml读取字符串绘制            mPaint.setColor(Color.YELLOW);            canvas.drawText(getResources().getString(R.string.string_font), 0, 210, mPaint);            super.onDraw(canvas);        }                /**         * 获取字符串宽         * @param str         * @return         */        private int getStringWidth(String str) {            return (int) mPaint.measureText(STR_WIDTH);         }        /*         * 获取字体高度         */        private int getFontHeight() {            FontMetrics fm = mPaint.getFontMetrics();            return (int)Math.ceil(fm.descent - fm.top) + 2;        }    } class GeometryView extends View {        Paint mPaint = null;        public GeometryView(Context context) {            super(context);            mPaint = new Paint();            mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);        }        @Override        protected void onDraw(Canvas canvas) {            super.onDraw(canvas);                    //设置画布颜色 也就是背景颜色            canvas.drawColor(Color.WHITE);                       mPaint.setColor(Color.BLACK);            canvas.drawText("绘制无规则几何图形喔!!!", 150, 30, mPaint);                        //绘制一条线            mPaint.setColor(Color.BLACK);            mPaint.setStrokeWidth(4);            canvas.drawLine(0, 0, 100, 100, mPaint);                        //绘制一个矩形            mPaint.setColor(Color.YELLOW);            canvas.drawRect(0, 120, 100, 200, mPaint);                        //绘制一个圆形            mPaint.setColor(Color.BLUE);            canvas.drawCircle(80, 300, 50, mPaint);                        //绘制一个椭圆            mPaint.setColor(Color.CYAN);            canvas.drawOval(new RectF(300,370,120,100), mPaint);                        //绘制多边形            mPaint.setColor(Color.BLACK);            Path path = new Path();            path.moveTo(150+5 , 400 -50);            path.lineTo(150+45, 400 - 50);            path.lineTo(150+30, 460 - 50);            path.lineTo(150+20, 460 - 50);            path.close();            canvas.drawPath(path, mPaint);                    }    }}



0 0
原创粉丝点击