- Android中Canvas繪圖基礎(chǔ)詳解
- Android Paint、Canvas、Matrix使用講解(一、Paint)
- Android Paint之 setXfermode PorterDuffXfermode 講解
- Canvas開(kāi)篇之drawBitmap方法講解
- Android 手把手教您自定義ViewGroup(一)
- Android 自定義View (一)
- Android 自定義View (二) 進(jìn)階
- Android 自定義View (三) 圓環(huán)交替 等待效果
- Android 自定義View (四) 視頻音量調(diào)控
- Android 深入理解Android中的自定義屬性
- Android ViewDragHelper完全解析 自定義ViewGroup神器
- Android 自定義控件實(shí)戰(zhàn)
- Android LayoutInflater原理分析,帶你一步步深入了解View(一)
- Android視圖繪制流程完全解析,帶你一步步深入了解View(二)
- Android視圖狀態(tài)及重繪流程分析,帶你一步步深入了解View(三)
- Android自定義View的實(shí)現(xiàn)方法,帶你一步步深入了解View(四)
- Android自定義控件三部曲文章索引
- 自定義View:測(cè)量measure,布局layout,繪制draw
自定義控件
- 滑動(dòng)開(kāi)關(guān)
- 自定義ViewPager
- 粘性控件
- 側(cè)滑刪除
- 視差特效
- 側(cè)邊欄SlidingMenu
- 3D畫(huà)廊 Gallery
- 流式布局FlowLayout
- 水波紋Ripple
- 旋轉(zhuǎn)菜單
- 下拉刷新
- 側(cè)滑面板
- 快速索引
- 輪播圖/廣告條
- 等比例顯示控件
- 下拉選擇框Spinner
旋轉(zhuǎn)菜單
下拉選擇
下拉刷新
滑動(dòng)開(kāi)關(guān)
輪播圖 廣告條
自定義控件
側(cè)邊欄SlidingMenu
水波紋
自定義控件
自定義ViewPager
快速索引
粘性控件
視差特效
側(cè)滑面板
DragLayout
側(cè)拉刪除
等比例顯示控件

流式布局FlowLayout
3D畫(huà)廊
自定義吐司
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;//土司天生沒(méi)有觸摸事件
params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;//換成電話(huà)的類(lèi)型
/**
* 展示號(hào)碼歸屬地顯示
*/
public void show(String location) {
mLocation = (TextView) view.findViewById(R.id.tv_location);
mView = new TextView(mContext);
// 設(shè)置歸屬地的顏色
mView.setBackgroundColor(Color.RED);
// 設(shè)置歸屬地的位置
mLocation.setText(location);
mWM.addView(mView, mParams);
}
/**
* 隱藏號(hào)碼歸屬地
*/
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;
}
}
}
自定義對(duì)話(huà)框
public class AddressDialog extends Dialog {
private Window window;
private OnItemClickListener mOnItemClickListener;
//把我們自己的樣式傳給父類(lèi)
//屏蔽父類(lèi)里面的樣式
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();
//獲取到當(dāng)前窗體的樣式
LayoutParams params = window.getAttributes();
params.gravity = Gravity.BOTTOM;
// | Gravity.CENTER_HORIZONTAL;
//設(shè)置窗體的屬性
window.setAttributes(params);
}
}