android全屏模式动画,Android--Toast全屏和动画(模拟QQ样式)
這里寫圖片描述
如圖, 底下是一個空布局, 參考我的博文: http://blog.csdn.net/angcyo/article/details/53967099
頂部就是一個Toast. 全屏,并且進入和退出都有自定義的動畫.
正文:
系統(tǒng)并沒有提供設(shè)置全屏和動畫的方法.
但是Java有一個神器, 反射. 我們可以通過反射. 肆意修改成員變量.
//全屏和動畫的設(shè)置方法
private static void initToast(Toast toast) {
try {
Field mTN = toast.getClass().getDeclaredField("mTN");
mTN.setAccessible(true);
Object mTNObj = mTN.get(toast);
Field mParams = mTNObj.getClass().getDeclaredField("mParams");
mParams.setAccessible(true);
WindowManager.LayoutParams params = (WindowManager.LayoutParams) mParams.get(mTNObj);
params.width = -1;//-1表示全屏, 你也可以設(shè)置任意寬度.
params.height = -2;// (int) dpToPx(context, T_HEIGHT);
params.windowAnimations = R.style.BaseToastAnimation;//設(shè)置動畫, 需要是style類型
} catch (Exception e) {
e.printStackTrace();
}
}
有了以上方法, 你用該就可以直接使用了.
下面提供一下我的封裝:
public static void show(Context context, CharSequence charSequence) {
View layout;
if (toast == null) {
toast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
initToast(toast);
layout = LayoutInflater.from(context).inflate(R.layout.base_toast, null);//自定義的布局
((TextView) layout.findViewById(R.id.base_toast_text_view)).setText(charSequence);
toast.setView(layout);
toast.setGravity(Gravity.TOP, 0, 0);//從頂部開始顯示
toast.getView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);//設(shè)置Toast可以布局到系統(tǒng)狀態(tài)欄的下面
} else {
layout = toast.getView();
}
TextView titleView = find(layout, R.id.base_toast_text_view);
ImageView imageView = find(layout, R.id.base_toast_image_view);
titleView.setText(charSequence);//設(shè)置文本信息
toast.show();
}
是不是很簡單?
布局陰影的方法:
在5.0以上的系統(tǒng)中可以通過下面的方法設(shè)置:
android:elevation="10dp"
萬能的方法:
//陰影的漸變顏色
android:angle="-90"
android:centerColor="#000"
android:endColor="#00000000"
android:startColor="#000"
android:type="linear"
/>
//陰影的偏移高度
//布局的背景顏色
至此: 文章就結(jié)束了,如有疑問: QQ群:274306954 歡迎您的加入.
總結(jié)
以上是生活随笔為你收集整理的android全屏模式动画,Android--Toast全屏和动画(模拟QQ样式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 过拟合及常见处理办法整理
- 下一篇: 05-中央处理器