zoukankan      html  css  js  c++  java
  • android自定义控件(六) 刷新

    三种得到LinearInflater的方法

    a. LayoutInflater inflater = getLayoutInflater();



    b. LayoutInflater localinflater =
      (LayoutInflater)context.getSystemService
    (Context.LAYOUT_INFLATER_SERVICE); 


    c. LayoutInflater inflater = LayoutInflater.from(context);

    onDraw 方法绘图,invalidate刷新界面。

    效果图:

    点击一下换颜色

        

    onDraw画完图后,给控件设置点击事件 ,将参数传到控件里,然后invalidate刷新

    1.onDraw画图,并增加changeColor方法

    1. public class CusView3 extends View {  
    2.   
    3.     private int color = 0;  
    4.   
    5.     public CusView3(Context context, AttributeSet attrs) {  
    6.         super(context, attrs);  
    7.     }  
    8.   
    9.     @Override  
    10.     protected void onDraw(Canvas canvas) {  
    11.         super.onDraw(canvas);  
    12.         Paint mPaint = new Paint();  
    13.         if (color > 2) {  
    14.             color = 0;  
    15.         }  
    16.         switch (color) {  
    17.         case 0:  
    18.             mPaint.setColor(Color.GREEN);  
    19.             break;  
    20.         case 1:  
    21.             mPaint.setColor(Color.RED);  
    22.             break;  
    23.         case 2:  
    24.             mPaint.setColor(Color.BLUE);  
    25.             break;  
    26.   
    27.         default:  
    28.             break;  
    29.         }  
    30.         mPaint.setStyle(Style.FILL);  
    31.         mPaint.setTextSize(35.0f);  
    32.         canvas.drawText("点击我刷新", 10, 60, mPaint);  
    33.     }  
    34.   
    35.     public void changeColor() { //为了让外面调用  
    36.         color++;  
    37.     }  
    38. }  

    2.布局

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7.     <xue.test.CusView3  
    8.         android:id="@+id/cusview3"  
    9.         android:layout_width="wrap_content"  
    10.         android:layout_height="wrap_content"  
    11.         >  
    12.     </xue.test.CusView3>  
    13. </LinearLayout>  



    3.画图后 给控件设置点击事件 ,将参数传到控件里,然后invalidate刷新

    1. public class TestCustomViewActivity extends Activity {  
    2.     @Override  
    3.     public void onCreate(Bundle savedInstanceState) {  
    4.         super.onCreate(savedInstanceState);  
    5.         setContentView(R.layout.main);  
    6.         view3 = (CusView3) findViewById(R.id.cusview3);  
    7.         // 点击事件  
    8.         view3.setOnClickListener(new View.OnClickListener() {  
    9.   
    10.             @Override  
    11.             public void onClick(View v) {  
    12.                 Message message = new Message();  
    13.                 message.what = 1;  
    14.                 myHandler.sendMessage(message);  
    15.             }  
    16.         });  
    17.     }  
    18.   
    19.     Handler myHandler = new Handler() {  
    20.         // 接收到消息后处理  
    21.         public void handleMessage(Message msg) {  
    22.   
    23.             switch (msg.what) {  
    24.             case 1:  
    25.                 // 调用方法  
    26.                 view3.changeColor();  
    27.                 // 刷新方法  
    28.                 view3.invalidate();  
    29.                 break;  
    30.             }  
    31.             super.handleMessage(msg);  
    32.         }  
    33.     };  
    34.     private CusView3 view3;  
    35.   
    36. }  

    至于自定义控件占整屏的问题,可能需要用layoutparams

    源码下载: http://download.csdn.net/detail/ethan_xue/4152203

  • 相关阅读:
    iOS优秀博文合集
    iOS优化策略
    iOS编码规范
    二维码
    Objective-C Http常用API 同步请求与异步请求
    iOS开发之Runtime函数
    ios开发之常用宏的定义
    iOS开发之动画编程的几种方法
    iOS开发之常用第三方框架(下载地址,使用方法,总结)
    使用OC和swift创建系统自带的刷新界面
  • 原文地址:https://www.cnblogs.com/chengzhengfu/p/4574094.html
Copyright © 2011-2022 走看看