Android中简单图形绘制,及全屏设置
下面的代码是参考《Android2.0游戏开发实战宝典》
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.hm.main.MyView
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
MyActivity.java
package com.hm.main;
import android.app.Activity;
import android.os.Bundle;
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
MyView.java
package com.hm.main;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View {
// 在xml中配置该view应用,必须实现此构造器;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);// 绘制黑色背景
Paint paint = new Paint(); // 创建画笔工具
paint.setColor(Color.RED);// 设置画笔工具颜色为红色
// 绘制矩形,左上角x、y,右下角x、y
canvas.drawRect(10, 10, 110, 110, paint);
// 绘制字符串,x、y为字符串所占矩形的左下角坐标;
canvas.drawText("这是字符串", 10, 130, paint);
// 绘制矩形,左上角x、y,右下角x、y
RectF rf1 = new RectF(10, 130, 110, 230);
//根据矩形对象的大小和位置,绘制弧形,给出起始角度,和终止角度;逆时针
canvas.drawArc(rf1, 0, 45, true, paint);
//绘制直线,起点和终点坐标x、y
canvas.drawLine(150, 10, 250, 110, paint);
RectF rf2 = new RectF(150, 130, 250, 230);
canvas.drawOval(rf2, paint); //根据矩形绘制圆
}
}
这里是参考himi的代码:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/263.html
MyActivity.java
package com.hm.main;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class MyActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 隐去电池等图标和一切修饰部分(状态栏部分)
// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 隐去标题栏(程序的名字)
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new MyView(this));
}
}
对于设置全屏,主要就两点:
一点是设置隐去状态栏部分,包括电池等图标,第二点无疑就是把我们应用的名字也隐去不显示,这样一来就全屏了。
但要注意的是:在代码中设置的话,设置无标题和设置全屏的两段代码要放置在 setContentView(R.layout.main); 这段代码的前面。要不然会报错。
MyView.java
package com.hm.main;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.view.View;
public class MyView extends View {
private Paint paint;
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setAntiAlias(true);// 设置画笔无锯齿(如果不设置可以看到效果很差)
this.setKeepScreenOn(true);// 设置背景常亮
paint.setColor(Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);// 设置刷屏颜色
// 这里最后两个参数不是宽高、而是矩形右下角的坐标
Rect rect = new Rect(30, 30, 50, 50);
canvas.drawRect(rect, paint);
//RectF 只是矩形 float形式 只是跟Rect精确度不一样
RectF rectF = new RectF(70f, 30f, 90f, 90f);
canvas.drawArc(rectF, 0, 360, true, paint);
//这也是画圆 第三个参数为半径
canvas.drawCircle(150, 30, 0, paint);
float[] points =new float[]{200f,10f,200f,40f,300f,30f,400f,70f};
canvas.drawLines(points, paint);
// canvas.drawLines(points, 1, 4, paint);//选取特定点数组中两点来画出一条直线
canvas.drawText("Himi", 230, 30, paint);
}
}
asd
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hm.main"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
设置全屏也可以在AndroidManifest.xml中定义:
在相应的Activity中节点中添加属性:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 即可以设置某个Activity全屏显示。若设置成 android:theme="@android:style/Theme.NoTitleBar" 即是只是设置成无标题状态。