parent
9f709aed2d
commit
6c8d212481
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.hmkcode.views"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0" >
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="8"
|
||||||
|
android:targetSdkVersion="19" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:icon="@drawable/ic_launcher"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:theme="@style/AppTheme" >
|
||||||
|
<activity
|
||||||
|
android:name=".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>
|
||||||
@ -0,0 +1,38 @@
|
|||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:customviews="http://schemas.android.com/apk/res/com.hmkcode.views"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||||
|
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||||
|
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_vertical_margin"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:context="com.hmkcode.views.MainActivity"
|
||||||
|
>
|
||||||
|
|
||||||
|
<com.hmkcode.views.SimpleView
|
||||||
|
android:id="@+id/simpleViewCircle"
|
||||||
|
android:layout_width="140dp"
|
||||||
|
android:layout_height="150dp"
|
||||||
|
customviews:shape="circle"
|
||||||
|
customviews:dim="70dp"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<com.hmkcode.views.SimpleView
|
||||||
|
android:id="@+id/simpleViewSquare"
|
||||||
|
android:layout_width="140dp"
|
||||||
|
android:layout_height="140dp"
|
||||||
|
customviews:shape="square"
|
||||||
|
customviews:dim="140dp"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
/>
|
||||||
|
</LinearLayout>
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
<resources>
|
||||||
|
<declare-styleable name="SimpleView">
|
||||||
|
<attr name="shape" format="enum">
|
||||||
|
<enum name="circle" value="0"/>
|
||||||
|
<enum name="square" value="1"/>
|
||||||
|
</attr>
|
||||||
|
<attr name="dim" format="dimension"/>
|
||||||
|
</declare-styleable>
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
<resources>
|
||||||
|
|
||||||
|
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||||
|
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||||
|
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||||
|
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<string name="app_name">Simple Custom View</string>
|
||||||
|
<string name="hello_world">Hello world!</string>
|
||||||
|
<string name="action_settings">Settings</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
<resources>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Base application theme, dependent on API level. This theme is replaced
|
||||||
|
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
|
||||||
|
-->
|
||||||
|
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
|
||||||
|
<!--
|
||||||
|
Theme customizations available in newer API levels can go in
|
||||||
|
res/values-vXX/styles.xml, while customizations related to
|
||||||
|
backward-compatibility can go here.
|
||||||
|
-->
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Application theme. -->
|
||||||
|
<style name="AppTheme" parent="AppBaseTheme">
|
||||||
|
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</resources>
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
package com.hmkcode.views;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
|
||||||
|
public class MainActivity extends Activity implements OnClickListener {
|
||||||
|
|
||||||
|
SimpleView svCircle;
|
||||||
|
SimpleView svSquare;
|
||||||
|
TextView tv;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
|
svCircle = (SimpleView) findViewById(R.id.simpleViewCircle);
|
||||||
|
svSquare = (SimpleView) findViewById(R.id.simpleViewSquare);
|
||||||
|
tv = (TextView) findViewById(R.id.tv);
|
||||||
|
|
||||||
|
svCircle.setOnClickListener(this);
|
||||||
|
svSquare.setOnClickListener(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
|
||||||
|
switch(view.getId()){
|
||||||
|
case R.id.simpleViewCircle:
|
||||||
|
tv.setText("Circle");
|
||||||
|
break;
|
||||||
|
case R.id.simpleViewSquare:
|
||||||
|
tv.setText("Square");
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
package com.hmkcode.views;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.CornerPathEffect;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class SimpleView extends View {
|
||||||
|
|
||||||
|
float dim;
|
||||||
|
int shape;
|
||||||
|
Paint paint;
|
||||||
|
|
||||||
|
public static final int CIRCLE = 0;
|
||||||
|
public static final int SQUARE = 1;
|
||||||
|
public SimpleView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
|
||||||
|
TypedArray a = context.getTheme().obtainStyledAttributes(
|
||||||
|
attrs,
|
||||||
|
R.styleable.SimpleView,
|
||||||
|
0, 0
|
||||||
|
);
|
||||||
|
|
||||||
|
try {
|
||||||
|
dim = a.getDimension(R.styleable.SimpleView_dim, 20f);
|
||||||
|
shape = a.getInteger(R.styleable.SimpleView_shape, 0);
|
||||||
|
} finally {
|
||||||
|
a.recycle();
|
||||||
|
}
|
||||||
|
|
||||||
|
paint = new Paint();
|
||||||
|
paint.setColor(0xfffed325); // yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDraw(Canvas canvas) {
|
||||||
|
super.onDraw(canvas);
|
||||||
|
|
||||||
|
// draw circle
|
||||||
|
switch(shape){
|
||||||
|
case CIRCLE:
|
||||||
|
canvas.drawCircle(dim, dim, dim, paint);
|
||||||
|
break;
|
||||||
|
case SQUARE:
|
||||||
|
canvas.drawRect(0, 0, dim, dim, paint);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue