Android自定義控件

  1. Android中Canvas繪圖基礎詳解
  2. Android Paint、Canvas、Matrix使用講解(一、Paint)
  3. Android Paint之 setXfermode PorterDuffXfermode 講解
  4. Canvas開篇之drawBitmap方法講解
  5. Android 手把手教您自定義ViewGroup(一)
  6. Android 自定義View (一)
  7. Android 自定義View (二) 進階
  8. Android 自定義View (三) 圓環交替 等待效果
  9. Android 自定義View (四) 視頻音量調控
  10. Android 深入理解Android中的自定義屬性
  11. Android ViewDragHelper完全解析 自定義ViewGroup神器
  12. Android 自定義控件實戰
  13. Android LayoutInflater原理分析,帶你一步步深入瞭解View(一)
  14. Android視圖繪製流程完全解析,帶你一步步深入瞭解View(二)
  15. Android視圖狀態及重繪流程分析,帶你一步步深入瞭解View(三)
  16. Android自定義View的實現方法,帶你一步步深入瞭解View(四)
  17. Android自定義控件三部曲文章索引
  18. 自定義View:測量measure,佈局layout,繪製draw

自定義控件

旋轉菜單

下拉選擇

下拉刷新

滑動開關

輪播圖 廣告條

自定義控件

側邊欄SlidingMenu

水波紋

自定義控件

自定義ViewPager

快速索引

粘性控件

視差特效

側滑面板

DragLayout

側拉刪除

等比例顯示控件

流式佈局FlowLayout

3D畫廊

微信朋友圈,QQ空間,微博等列表展示的功能實現

微博等列表展示的功能實現

自定義吐司

public class AddressTost implements OnTouchListener {
    private WindowManager              mWM;
    private Context                    mContext;
    private WindowManager.LayoutParams mParams;
    private TextView                   mLocation;
    private TextView                   mView;

    public AddressTost(Context context) {
        this.mContext = context;
        mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        mParams = new WindowManager.LayoutParams();
        WindowManager.LayoutParams params = mParams;
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
        params.width = WindowManager.LayoutParams.WRAP_CONTENT;
        params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                // | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE //需要toast 有觸摸事件
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        params.format = PixelFormat.TRANSLUCENT;
        // params.windowAnimations =
        // com.android.internal.R.style.Animation_Toast;
        // params.type = WindowManager.LayoutParams.TYPE_TOAST;//土司天生沒有觸摸事件
        params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;//換成電話的類型
        /**
         * 展示號碼歸屬地顯示
         */
    public void show(String location) {
        mLocation = (TextView) view.findViewById(R.id.tv_location);
        mView = new TextView(mContext);
        // 設置歸屬地的顏色
        mView.setBackgroundColor(Color.RED);
        // 設置歸屬地的位置
        mLocation.setText(location);
        mWM.addView(mView, mParams);
    }
    /**
     * 隱藏號碼歸屬地
     */
    public void hide() {
        // 隱藏土司
        if (mView!= null) {
            // note: checking parent() just to make sure the view has
            // been added... i have seen cases where we get here when
            // the view isn't yet added, so let's try not to crash.
            if (mView.getParent() != null) {
                // if (localLOGV) Log.v(TAG, "REMOVE! " + mView + " in " +
                // this);
                mWM.removeView(mView);
            }
            view = null;
        }
    }
}

自定義對話框

public class AddressDialog extends Dialog {
    private Window              window;
    private OnItemClickListener mOnItemClickListener;

    //把我們自己的樣式傳給父類
    //屏蔽父類裏面的樣式
    public AddressDialog(Context context) {
        super(context, R.style.AddressDialogStyle);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_address_style);
        window = getWindow();
        //獲取到當前窗體的樣式
        LayoutParams params = window.getAttributes();

        params.gravity = Gravity.BOTTOM;
        // | Gravity.CENTER_HORIZONTAL;
        //設置窗體的屬性
        window.setAttributes(params);
    }
}

Android視頻教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章