安卓常用 widget

來源:互聯網
上載者:User

標籤:

驗證碼

public class SpinnerImg extends ImageView {    /**     * 完成選擇後啟動另外一個spinner     */    private ItemListener itemListener;    private Context mContext;    /** 下拉PopupWindow */    private UMSpinnerDropDownItems mPopupWindow;    /** 下拉布局檔案 */    private LinearLayout layout;    /** 下拉布局檔案建立監聽器 */    private ViewCreatedListener mViewCreatedListener;    public SpinnerImg(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        initButton(context);    }    public SpinnerImg(Context context, AttributeSet attrs) {        super(context, attrs);        initButton(context);    }    public SpinnerImg(Context context, final LinearLayout layout,            ViewCreatedListener mViewCreatedListener) {        super(context);        setResIdAndViewCreatedListener(layout, mViewCreatedListener);        initButton(context);    }    private void initButton(Context context) {        this.mContext = context;        // UMSpinnerButton監聽事件        setOnClickListener(new UMSpinnerButtonOnClickListener());    }    public PopupWindow getPopupWindow() {        return mPopupWindow;    }    public void setPopupWindow(UMSpinnerDropDownItems mPopupWindow) {        this.mPopupWindow = mPopupWindow;    }    public LinearLayout getResId() {        return layout;    }    /**     * @Description: TODO 隱藏下拉布局     */    public void dismiss() {        mPopupWindow.dismiss();    }    /**     * @Description: TODO 設定下拉布局檔案,及布局檔案建立監聽器     * @param @param mResId 下拉布局檔案ID     * @param @param mViewCreatedListener 布局檔案建立監聽器     */    public void setResIdAndViewCreatedListener(LinearLayout layout,            ViewCreatedListener mViewCreatedListener) {        this.mViewCreatedListener = mViewCreatedListener;        // 下拉布局檔案id        this.layout = layout;        // 初始化PopupWindow        mPopupWindow = new UMSpinnerDropDownItems(mContext);    }    /**     * UMSpinnerButton的點擊事件     */    class UMSpinnerButtonOnClickListener implements View.OnClickListener {        @Override        public void onClick(View v) {            if (mPopupWindow != null) {                if (!mPopupWindow.isShowing()) {                    // 設定PopupWindow彈出,退出樣式                    mPopupWindow.setAnimationStyle(R.style.Animation_dropdown);                    // 計算popupWindow下拉x軸的位置                    int lx = (SpinnerImg.this.getWidth()                            - mPopupWindow.getmViewWidth() - 7) / 2;                    // showPopupWindow                    mPopupWindow.showAsDropDown(SpinnerImg.this, lx, -5);                }            }        }    }    /**     * @ClassName UMSpinnerDropDownItems     * @Description TODO 下拉介面     */    public class UMSpinnerDropDownItems extends PopupWindow {        private Context mContext;        /** 下拉視圖的寬度 */        private int mViewWidth;        /** 下拉視圖的高度 */        private int mViewHeight;        public UMSpinnerDropDownItems(Context context) {            super(context);            this.mContext = context;            loadViews();        }        /**         * @Description: TODO 載入布局檔案         * @param         * @return void         * @throws         */        private void loadViews() {            // 布局載入器載入布局檔案            final View v = layout;            // 計算view寬高            onMeasured(v);            // 必須設定            setWidth(LayoutParams.WRAP_CONTENT);            setHeight(LayoutParams.WRAP_CONTENT);            setContentView(v);            setFocusable(true);            // 設定布局建立監聽器,以便在執行個體化布局控制項對象            if (mViewCreatedListener != null) {                mViewCreatedListener.onViewCreated(v);            }        }        /**         * @Description: TODO 計算View長寬         * @param @param v         */        private void onMeasured(View v) {            int w = View.MeasureSpec.makeMeasureSpec(0,                    View.MeasureSpec.UNSPECIFIED);            int h = View.MeasureSpec.makeMeasureSpec(0,                    View.MeasureSpec.UNSPECIFIED);            v.measure(w, h);            mViewWidth = v.getMeasuredWidth();            mViewHeight = v.getMeasuredHeight();        }        public int getmViewWidth() {            return mViewWidth;        }        public void setmViewWidth(int mViewWidth) {            this.mViewWidth = mViewWidth;        }        public int getmViewHeight() {            return mViewHeight;        }        public void setmViewHeight(int mViewHeight) {            this.mViewHeight = mViewHeight;        }    }    /**     * @ClassName ViewCreatedListener     * @Description TODO 布局建立監聽器,執行個體化布局控制項對象     * @author kenny     * @date 2012-8-15     */    public interface ViewCreatedListener {        void onViewCreated(View v);    }    public void handleClick(int position) {        this.dismiss();        itemListener.endItemSelect(position);    }    public void setFinishListener(ItemListener itemListener) {        this.itemListener = itemListener;    }    // 介面回調資料    public static interface ItemListener {        void endItemSelect(int position);    }    /**     *      * @param arryList     *            spinner裡面的數組     * @param whichSpinner     *            這個是哪個spinner被選擇的     *      */    public void loadListData(final LinkedList<String[]> arryList) {        this.setResIdAndViewCreatedListener(creatlayout(arryList),                new SpinnerImg.ViewCreatedListener() {                    @Override                    public void onViewCreated(View v) {                        for (int i = 0; i < arryList.size(); i++) {                            layout.getChildAt(i).setOnClickListener(                                    new View.OnClickListener() {                                        @Override                                        public void onClick(View v) {                                            SpinnerImg.this.handleClick(Integer                                                    .valueOf(v.getTag()                                                            .toString()));                                        }                                    });                            layout.getChildAt(i).setTag(i);                        }                    }                });    }    /**     * 建立列表布局     *      */    public LinearLayout creatlayout(LinkedList<String[]> arryList) {        LinearLayout layout = new LinearLayout(getContext());        layout.setOrientation(LinearLayout.VERTICAL);        layout.setBackgroundColor(Color.WHITE);        for (int i = 0; i < arryList.size(); i++) {            TextView tv = new TextView(getContext());            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(                    OnlyYouHelpMe.Dp2Px(getContext(), 100),                    OnlyYouHelpMe.Dp2Px(getContext(), 40));            tv.setLayoutParams(params);            tv.setTextColor(Color.BLACK);            tv.setGravity(Gravity.CENTER);            Drawable drawable = getResources().getDrawable(R.drawable.line_absolute);            Drawable bg = getResources().getDrawable(R.drawable.bg_text_gray);            tv.setBackgroundDrawable(bg);            drawable.setBounds(0, 0, drawable.getMinimumWidth(),                    drawable.getMinimumHeight());            tv.setCompoundDrawables(null, null, null, drawable);            tv.setPadding(5, 0, 5, 0);            tv.setText(arryList.get(i)[0]);            layout.addView(tv);        }        return layout;    }}
View Code

 

安卓常用 widget

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.