Android 笔记8
2015-09-17 19:50
549 查看
目录
自定义View之画奥运五环
package com.example.linj.myownapp.paint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.View; import java.util.Calendar; /** * Created by Administrator on 2015/9/16. */ public class MyView extends View { private Paint paint; private int width; private int height; public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paintAo(canvas); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec); setMeasuredDimension(width, height); } private void paintAo(Canvas canvas) { paint = new Paint(); paint.setColor(Color.BLUE); paint.setAntiAlias(true); paint.setStrokeWidth(8); paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(150, 300, 90, paint); paint.setColor(Color.YELLOW); canvas.drawCircle(350, 300, 90, paint); paint.setColor(Color.BLACK); canvas.drawCircle(550, 300, 90, paint); paint.setColor(Color.GREEN); canvas.drawCircle(250, 400, 90, paint); paint.setColor(Color.RED); canvas.drawCircle(450, 400, 90, paint); } }
联系人侧边字母检索,微信通讯录侧边字母检索
//这是自定义的view package com.example.linj.myownapp.paint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; /** * Created by Administrator on 2015/9/17. */ public class MySlider extends View { private int width; private int height; private Paint paint; private Paint paintColor; private int index = -1; private String[] array = new String[]{"a","b","c","d","e","f","g","h","i", "j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; private OnItemSelectListener listener; public interface OnItemSelectListener { public void onItemSelected(int index, String name, boolean onTouch); } public void setOnItemSelectListener(OnItemSelectListener listener){ this.listener = listener; } public MySlider(Context context) { super(context); } public MySlider(Context context, AttributeSet attrs) { super(context, attrs); paint = new Paint(); paint.setTextAlign(Paint.Align.CENTER); paintColor = new Paint(); paintColor.setColor(Color.RED); paintColor.setTextAlign(Paint.Align.CENTER); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec); setMeasuredDimension(width, height); paint.setTextSize(height / 26); paintColor.setTextSize(height/26); } private float x; private float y; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_DOWN: x = event.getX(); y = event.getY(); if (x>width-paint.measureText("m")*2){ index = (int) y/(height/26); Log.d("lu","点击了 "+array[index]); listener.onItemSelected(index,array[index],true); invalidate(); return true; } break; case MotionEvent.ACTION_UP: listener.onItemSelected(index,array[index],false); index = -1; invalidate(); break; default: break; } return super.onTouchEvent(event); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (int i = 0; i < array.length; i++){ if (index == i) { canvas.drawText(array[i], width - paintColor.measureText("m"), height / 26 * (i + 1), paintColor); }else { canvas.drawText(array[i], width - paint.measureText("m"), height / 26 * (i + 1), paint); } } } } //xml和activity部分代码,自定义view的监听事件 mySlider = (MySlider) findViewById(R.id.my_chars); mySlider.setOnItemSelectListener(new MySlider.OnItemSelectListener() { @Override public void onItemSelected(int index, String name, boolean onTouch) { if (onTouch) { mTextChar.setText(name.toUpperCase()); }else { mTextChar.setVisibility(View.GONE); } } });
总结
Android路漫漫,不知不觉时间已经过去了一半,加油,少年。相关文章推荐
- Android下使用全局变量
- Android5.0源码开发之launcher切换语言后Folder和ShortcutT没有切换到当前语言
- Android开发环境的演变
- android自定义View创建一个Path绘制多边形,贝塞尔曲线,
- Activity显示关闭动画
- android异步加载AsyncTask
- Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class android-su
- Android设备唯一性判断
- Android文字自动横向滚动的TextView(文字长度不够也可以)
- Android推荐书目文章(实时更新....)
- 【转】android fragment 博客 学习
- android 开发环境
- Android0917<二十一>(自定义的View、绘制简单图形、Bitmap)(二)
- Arcgis For Android实现比例尺
- Android-ListActivity单击事件的响应
- Android 自定义View——Path的使用
- iOS中objecive-c语言和android中java语言的区别
- Android自由选择TextView的文字
- 深入理解Android的startservice和bindservice
- Activity总结