自定义View-Myview
来源:互联网 发布:已备案域名 编辑:程序博客网 时间:2024/06/04 19:19
自定义控件知识点:
MyView:
package com.ruru.myview.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.BitmapFactory;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;import com.ruru.myview.R;/** * Created by 27c1 on 2016/11/29. */public class MyView extends View { private static final String TAG = "view"; private int height; private Paint paint; private int x; private int y; public MyView(Context context) { super(context); init(); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); //自定义属性的声明和获取 TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView, 0, 0); height = array.getDimensionPixelSize(R.styleable.MyView_height, 20); int width = array.getDimensionPixelSize(R.styleable.MyView_width, 30); String text = array.getString(R.styleable.MyView_text); Log.i(TAG, "MyView: "+width+"-"+ height +"-"+text); //初始化视图 init(); } private void init() {//设置画笔 paint = new Paint(); x = 0; y = 0; paint.setColor(Color.RED);//设置画笔颜色 paint.setStrokeWidth(30);//设置画笔宽度 } @Override public void draw(Canvas canvas) { super.draw(canvas);// canvas.drawArc();// canvas.drawLine(0,0,getWidth(),height,paint);// canvas.drawText("你好",getWidth()/2,height/2,paint);// Bitmap bitmap = BitmapFactory.decodeStream(getResources().openRawResource(R.raw.a));// canvas.drawBitmap(bitmap,getWidth()/2-bitmap.getWidth()/2,0,paint); //如果下面高度写的是height的话那么高度就是Myview里边的30dp //如果高度是getHeight()那么就是整个高度 canvas.drawText("文字移动",x,y,paint);//宽度记得除以2否则会被挤出去 } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: x= (int) event.getX(); y= (int) event.getY(); invalidate();//此方法 是重新触发 draw方法 break; case MotionEvent.ACTION_UP: break; } return true;//下面这个一定要改为return true; }}MainActivity:
package com.ruru.myview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import com.ruru.myview.view.MyView;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); }}res-values-attrs:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyView"> <attr name="width" format="dimension"></attr> <attr name="height" format="dimension"></attr> <attr name="text" format="string"></attr> </declare-styleable></resources>
0 0
- 自定义View-Myview
- MyView绘图类的对View的重载(android)
- MyView.h
- myview.h
- MyView.cpp
- iPhone 自检工程错误解决方法:loaded the "MyView" nib but the view outlet was not set
- loaded the "MyView" nib but the view outlet was not set错误
- 自定义view
- 自定义View
- 自定义view
- 自定义View
- 自定义View
- 自定义view
- 自定义View
- 自定义view
- 自定义view
- 自定义View
- 自定义View
- php银联网页支付实现方法
- HoughLinesP函数用法示例
- MyBatis 学习入门·基本配置·项目实例
- 基于模型融合的推荐系统实现(2):迭代式SVD分解
- SensorImageView随重力移动的ImageView
- 自定义View-Myview
- HoughCircles函数用法示例
- 霍夫线变换综合示例
- 内存(RAM或ROM)和FLASH存储的真正区别总结
- 多线程之生产者消费者
- Android开源项目推荐之「网络请求哪家强」
- [LeetCode]Surrounded Regions
- springmvc中上传下载解决乱码的问题
- Java Reflect JDK动态代理