Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器,。
package com.example.lesson1_helloandroid; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; /** * 这个是自定义的MyView. * 至少需要重载构造方法和onDraw方法 * 对于自定义的View如果没有自己独特的属性,可以直接在xml文件中使用就可以了 * 如果含有自己独特的属性,那么就需要在构造函数中获取属性文件attrs.xml中自定义属性的名称 * 并根据需要设定默认值,放在在xml文件中没有定义。 * 如果使用自定义属性,那么在应用xml文件中需要加上新的schemas, * 比如这里是xmlns:my="http://schemas.android.com/apk/res/demo.view.my" * 其中xmlns后的“my”是自定义的属性的前缀,res后的是我们自定义View所在的包 * @author Administrator * */ public class MyView extends View{ //设置画笔 Paint paint; //构造函数 public MyView(Context context) { super(context); // TODO Auto-generated constructor stub paint = new Paint(); //设置颜色 字体大小 等 paint.setColor(Color.WHITE); paint.setTextSize(20); paint.setAntiAlias(true); } protected void onDraw(Canvas canvas){ //自定义界面绘制一个矩形框,在矩形框绘制一段文字 super.onDraw(canvas); //定义画布背景颜色 canvas.drawColor(Color.BLUE); //画布上绘制矩形框 canvas.drawRect(10,10,110,110, paint); //在矩形框上通过画笔绘制了文字 canvas.drawText("你妹的屌丝", 60, 170, paint); } }===================================================通过xml布局显示(未测试,不过思路大致是这样)======================================
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyView"> <attr name="textColor" format="color"/> <attr name="textSize" format="dimension"/> </declare-styleable> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:my="http://schemas.android.com/apk/res/demo.view.my" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <demo.view.my.MyView android:layout_width="fill_parent" android:layout_height="wrap_content" my:textColor="#FFFFFFFF" my:textSize="22dp" /> </LinearLayout>
package com.example.lesson1_helloandroid;//表示的是这个包的名称 import android.os.Bundle; import android.app.Activity;//是一个活动包,每一个android活动都需要继承Activity类 import android.view.Menu;// public class Lesson1_HelloAndroid extends Activity { @Override //onCreate 是一个重载函数,在这个函数中实现应用程序创建的所执行的过程。 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置当前的视图(View) //设置的方法是使用一个文件,这个文件因此决定了视图中包含的内容。 //当前设置表示从res/layout/目录中使用activity_lesson1_hello_android.xml文件 //setContentView(R.layout.activity_lesson1__hello_android); MyView myview = new MyView(this); this.setContentView(myview); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.lesson1__hello_android, menu); return true; } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.test.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>