当前位置:操作系统 > 安卓/Android >>

Android 复用自制的控件

项目每个页面都需要一个比较复杂的导航控件 其实就是一个很多按钮的布局


当然这个一个一个写绑定事件完全没问题,但项目有20来个页面 一个一个写就不好了,于是想到把他放到一widger包下 那个页面用到了 include他的xml然后在Activity实例化他

FootView.java

[java] 
package com.aijia.widget; 
 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
 
import com.aijia.main.AijiaExitActivity; 
import com.aijia.main.AijiaTabsActivity; 
import com.aijia.main.R; 
import com.aijia.main.AijiaIndexActivity; 
import com.aijia.overall.Constant; 
 
public class FootView { 
    private Button index; 
    private Button back; 
    private Button shopcar; 
    private Context context; 
    private Button f_order; 
    private Button f_exit; 
 
    public FootView(Context context) { 
        this.context = context; 
 
    } 
 
    public void init(View view) { 
 
        index = (Button) view.findViewById(R.id.f_index); 
        back = (Button) view.findViewById(R.id.f_back); 
        shopcar = (Button) view.findViewById(R.id.f_shopcar); 
        f_order = (Button) view.findViewById(R.id.f_order); 
        f_exit = (Button) view.findViewById(R.id.f_exit); 
        index.setOnClickListener(listener); 
        back.setOnClickListener(listener); 
        shopcar.setOnClickListener(listener); 
        f_order.setOnClickListener(listener); 
        f_exit.setOnClickListener(listener); 
    } 
 
    private OnClickListener listener = new OnClickListener() { 
 
        @Override 
        public void onClick(View v) { 
            switch (v.getId()) { 
            case R.id.f_index: 
                gotoIntent(AijiaIndexActivity.class); 
                break; 
            case R.id.f_back: 
                ((Activity) context).finish(); 
                break; 
            case R.id.f_shopcar: 
                Constant.CURRENTTABID = 3; 
                gotoIntent(AijiaTabsActivity.class); 
                break; 
            case R.id.f_order: 
                Constant.CURRENTTABID = 4; 
                gotoIntent(AijiaTabsActivity.class); 
                break; 
            case R.id.f_exit: 
                gotoIntent(AijiaExitActivity.class); 
                break; 
            default: 
                break; 
            } 
 
        } 
    }; 
 
    private void gotoIntent(Class<?> cls) { 
        Intent intent = new Intent(context, cls); 
        context.startActivity(intent); 
        ((Activity) context).finish(); 
    } 
 

如上 可以进行跳转退出等操作 注意他的init方法 参数是一个view,哪里的view呢?我们看Activity调用他的代码
[java] 
FootView footView = new FootView(context); 
        View roverall_footer = this.findViewById(R.id.overall_footer); 
        footView.init(roverall_footer); 

这样的话就可以 在应用中复用自己的控件了.

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,