android自定义控件(六) 刷新
来源:互联网 发布:淘宝网中老年唐装 编辑:程序博客网 时间:2024/05/21 15:03
转自:http://blog.csdn.net/ethan_xue/article/details/7326395
三种得到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方法
- public class CusView3 extends View {
- private int color = 0;
- public CusView3(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- Paint mPaint = new Paint();
- if (color > 2) {
- color = 0;
- }
- switch (color) {
- case 0:
- mPaint.setColor(Color.GREEN);
- break;
- case 1:
- mPaint.setColor(Color.RED);
- break;
- case 2:
- mPaint.setColor(Color.BLUE);
- break;
- default:
- break;
- }
- mPaint.setStyle(Style.FILL);
- mPaint.setTextSize(35.0f);
- canvas.drawText("点击我刷新", 10, 60, mPaint);
- }
- public void changeColor() { //为了让外面调用
- color++;
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <xue.test.CusView3
- android:id="@+id/cusview3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- >
- </xue.test.CusView3>
- </LinearLayout>
3.画图后 给控件设置点击事件 ,将参数传到控件里,然后invalidate刷新
- public class TestCustomViewActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- view3 = (CusView3) findViewById(R.id.cusview3);
- // 点击事件
- view3.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Message message = new Message();
- message.what = 1;
- myHandler.sendMessage(message);
- }
- });
- }
- Handler myHandler = new Handler() {
- // 接收到消息后处理
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 1:
- // 调用方法
- view3.changeColor();
- // 刷新方法
- view3.invalidate();
- break;
- }
- super.handleMessage(msg);
- }
- };
- private CusView3 view3;
- }
至于自定义控件占整屏的问题,可能需要用layoutparams
源码下载: http://download.csdn.net/detail/ethan_xue/4152203
- android自定义控件(六) 刷新
- android自定义控件(六) 刷新
- android自定义控件(六) 刷新
- android自定义控件(六) 刷新
- android自定义控件刷新
- 六.Android自定义控件
- android自定义刷新类控件
- Android自定义控件下拉刷新
- Android 自定义控件的刷新
- Android 自定义控件的刷新
- Android PullToRefreshView自定义下拉刷新控件
- Android自定义控件之仿美团下拉刷新
- Android自定义控件之仿美团下拉刷新
- Android自定义控件--下拉刷新的实现
- Android仿天猫下拉刷新自定义控件
- Android自定义控件之仿美团下拉刷新
- Android自定义控件之下拉刷新;
- Android自定义控件的刷新方法选择
- 对象(二)
- 关于正则的常识
- 64位Eclipse运行时提示“Failed to load the JNI shared library /Java/jre6/bin/client/jvm.dll”的一个解决方案
- 撞错2
- Hbase shell
- android自定义控件(六) 刷新
- 系统优化【1】---web前端
- 修旱冰场、
- Cocos2d基础及基本函数
- VB.NET 设置Label字体
- java设计模式之原型模式
- 用户名、密码、复选框,全选各种验证
- 第二个面向对象的程序
- php 正则匹配字符串为空白字符或空字符