/**1,引導頁動畫*/
動畫結束時,追加切換動畫,需要在anim中新建兩個xml
@Override
public void onAnimationEnd(Animation animation) {
// 當動畫結束時-跳轉
Intent intent=new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);
//實現跳轉的時候切換動畫
overridePendingTransition(R.anim.in_anim, R.anim.out_anim);
finish();
}
這個duration必須設置 不設置默認爲0,動畫不執行
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1500"
android:fromDegrees="0"
android:toDegrees="90" >
</rotate>
/**2 主頁面 radiobutton*/
value裏做個style組件 放radiobutton
<style
name="radio_style"
>
<item name="android:checked">false</item>
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:button">@null</item>
<item name="android:paddingTop">15dp</item>
<item name="android:gravity">center</item>
</style>
主頁面1:
設置爲垂直,否則會發生效果出不來的BUG
android:orientation="vertical"
做個viewpager 權重選成1 就把button組件頂到下面去了
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_main"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
把做好的button組件引入到主頁面1
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/main_button"
/>
/**3 頂端actionbar*/
單獨做一個xml
weight設置爲1 把其他兩個頂到左右兩端
textview layout_gravity設置center
封裝出來fragment成爲父類,讓其他需要定製的子頁面去繼承重寫圖片和標題文本
新建fragment包和類,BaseFragmen要繼承VA包的fragment,用於減少代碼冗餘
/**
* 基礎的fragment父類
* 所有fragment都要繼承自該類
* 在類中封裝公有的標題欄初始化方法
* 提高代碼重用性,降低冗餘
*/
package com.example.fragment;
import android.support.v4.app.Fragment;
protected void initialActionbar(int leftId,String title,int rightId){
/**
* 如果子類沒有actionbar,就不繼承下列控件了
*/
if (actionbar==null) {
return;
}
//獲得該標題欄中的所有控件
ImageView imageview_left=
(ImageView) actionbar.findViewById(R.id.imageView_actionbar_left);
TextView textview_title=
(TextView) actionbar.findViewById(R.id.textview_actionbar_title);
ImageView imageview_right=
(ImageView) actionbar.findViewById(R.id.imageView_actionbar_right);
//該圖片需要隱藏,約定如下
//View.INVISIBLE是隱藏,View.GONE是刪除,位置會騰出來
if (leftId==-1) {
imageview_left.setVisibility(View.INVISIBLE);
}else{
//顯示該圖片
imageview_left.setVisibility(View.VISIBLE);
imageview_left.setImageResource(leftId);
}
//如果標題參數爲空 則不顯示標題
if (TextUtils.isEmpty(title)) {
textview_title.setVisibility(View.INVISIBLE);
}else {
textview_title.setVisibility(View.VISIBLE);
textview_title.setText(title);
}
//右邊圖片
if (rightId==-1) {
imageview_right.setVisibility(View.INVISIBLE);
}else{
//顯示該圖片
imageview_right.setVisibility(View.VISIBLE);
imageview_right.setImageResource(rightId);
}
}
創建四個fragment 繼承BaseFragment 重寫佈局
不需要左上右上按鈕時,填-1
R.id.include_fragment_dialpad 是xml裏includ的,不加會發生頂部banner不顯示的BUG
initialUI()千萬別忘了寫
public class CalllogFragment extends BaseFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//inflater 佈局解析器 ;false表示container並非作爲根節點,再去解析R.layout.fragment_contacts時作爲佈局參數
contentview=inflater.inflate(R.layout.fragment_calllog, container, false);
<pre name="code" class="java"> initialUI()
return contentview;}private void initialUI(){actionbar=(LinearLayout) contentview.findViewById(R.id.include_fragment_dialpad);initialActionbar(R.drawable.ic_add_icon, "撥打電話", R.drawable.ic_backspace);}
main中編寫適配器
private void initialFragments() { //初始化viewpager
//創建數據適配器
//導的可能不是V4包,需要繼承fragmentActicity,才能getSupportFragmentManager() adapter =new MyFragmentPagerAdapter(getSupportFragmentManager());
//創建四個fragment對象 //將四個fragment對象添加到適配器集合當中//將數據適配器和viewpager進行綁定
viewpager_main.setAdapter(adapter); viewpager_main.setCurrentItem(0); //啓動時當前item顯示第幾個
}/**4 底端選擇器*/
res直接新建,drawable-selector
被選中 未被選中 都要寫 選中放上面 未選中放下面
state_checked 單選
state_selected 複選
<item android:drawable="@drawable/ic_calllog_selected"
android:state_checked="true"></item>
<item android:drawable="@drawable/ic_calllog"
android:state_checked="false"></item>
然後再xml裏把圖片地址改成選擇器,設置默認選中狀態
<RadioButton
android:id="@+id/radio_calllog"
style="@style/radio_style"
android:checked="true"
android:drawableTop="@drawable/calllog_selector"
/>
/**5設置兩個監聽器 滑動&點擊*/
private void setListener() {
viewpager_main.setOnPageChangeListener(new OnPageChangeListener() {
//當我們在viewpager選擇不同頁面時 回調該方法
//方法被回調的時候會把頁面在集合中的索引傳回來
@Override
public void onPageSelected(int arg0) {
// 判斷頁碼
switch (arg0) {
case 0:
radiogroup_bottom.check(R.id.radio_calllog);//按鈕id傳給父容器
break;
case 1:
radiogroup_bottom.check(R.id.radio_contact);
break;
case 2:
radiogroup_bottom.check(R.id.radio_sms);
break;
case 3:
radiogroup_bottom.check(R.id.radio_dialpad);
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
//爲radiogroup添加監聽
//當選擇不同按鈕時 改變viewpager顯示的fragment
radiogroup_bottom.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio_calllog:
viewpager_main.setCurrentItem(0,false);
break;
case R.id.radio_contact:
viewpager_main.setCurrentItem(1,false);
break;
case R.id.radio_sms:
viewpager_main.setCurrentItem(2,false);
break;
case R.id.radio_dialpad:
viewpager_main.setCurrentItem(3,false);
break;
default:
break;
}
}
});
}