這陣子在做Lephone的適配,測試組提交一個bug:標題欄的文字較長時沒有顯示完全,其實這并不能算個bug,并且這個問題在以前其他機器也沒有出現,只是說在Lephone的這個平臺上顯示得不怎么美觀,因為聯想將原生的標題欄UI進行了修改。修改的過程中遇到了一個難題,系統自帶的那個標題欄進度總能夠到達100%后漸退,但是我每次最后到100%那一段顯示不全,嘗試了用線程程序死了卡主了不說,還是一樣的效果,后來同事一句話提醒了我用動畫。確實是這樣我猜系統的也是這樣實現的,等進度到達100%后,用動畫改變它的透明度就ok了。
實現的效果:標題欄顯示網頁標題并且滾動,并且用進度條顯示網頁的加載進度(重新自定義標題欄,lephone修改后的都帶有一個返回按鈕,并且標題文本和進度條是Frame布局的不怎么好看)。
1、首先定義一個RelativeLayout布局文件 broser_custom_title.xml (AlwaysMarqueeTextView這個類重寫了TextView,實現一個跑馬燈的效果,網上能夠找到
private Activity activity;
private ProgressBar pb;
private TextView tvtitle;
public MyWebChromeClient(Activity activity) {
this.activity = activity;
}
Animation animation;
@Override
public void onProgressChanged(WebView view, int newProgress) {
pb=(ProgressBar)activity.findViewById(R.id.pb);
pb.setMax(100);
if(newProgress<100){
if(pb.getVisibility()==View.GONE)
pb.setVisibility(View.VISIBLE);
pb.setProgress(newProgress);
}else{
pb.setProgress(100);
animation=AnimationUtils.loadAnimation(activity, R.anim.animation);
// 運行動畫 animation
pb.startAnimation(animation);
// 將 spinner 的可見性設置為不可見狀態
pb.setVisibility(View.INVISIBLE);
}
super.onProgressChanged(view, newProgress);
}
@Override
public void onReceivedTitle(WebView view, String title) {
tvtitle=(TextView)activity.findViewById(R.id.tvtitle);
tvtitle.setText(title);
super.onReceivedTitle(view, title);
}
}
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="700"/>
</set>
新聞熱點
疑難解答
圖片精選