版權聲明:未經博主允許不得轉載 一:簡介 【達叔有道】軟體技術人員,時代作者,從 Android 到全棧之路,我相信你也可以!閱讀他的文章,會上癮!You and me, we are family ! 二:項目說明 項目還好,難度不大,接下來說明一下如何製作廣告顯示已經一些UI佈局等。 三:項目代 ...
版權聲明:未經博主允許不得轉載
一:簡介
【達叔有道】軟體技術人員,時代作者,從 Android 到全棧之路,我相信你也可以!閱讀他的文章,會上癮!You and me, we are family !
二:項目說明
項目還好,難度不大,接下來說明一下如何製作廣告顯示已經一些UI佈局等。
三:項目代碼說明
一般地,點擊一款APP,會有一個頁面圖展示效果,幾秒後跳轉到主界面。
SplashActivity.java
public class SplashActivity extends AppCompatActivity{
protected Handler mHandler=new Handler();//首先創建Handler對象
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//對象.postDelayed實現該方法
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
//設置時間並跳轉
startActivity(new Intent(SplashActivity.this,MainActivity.class));
}
},2000);
}
}
創建主界面等,創建Fragment佈局,如同微信下方點擊效果。分別創建fragment.xml佈局,fragment.java等。
public class MainFragment extends Fragment {
//創建完,繼承Fragment,extends Fragment
//導入import android.support.v4.app.Fragment;
//點擊ctrl+o,導入方法,不用自己寫onCreateView
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//返回自己渲染的佈局
return inflater.inflate(R.layout.fragment_main,container,false);
}
}
然後再主方法中添加動態生成Fragment,MainActivity.java中添加Fragment。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
}
//添加點擊效果
protected MainFragment mMainFragment=new MainFragment();//首頁
//創建對象
this.getSupportFragmentManager()
.beginTransaction()
.add(R.id.container_content,mMainFragment)
.add(R.id.container_content,mMainoneFragmenr)//添加
.hide(mMainoneFragmenr)//隱藏
.add(R.id.container_content,mMaintwoFragment)//添加
.hide(mMaintwoFragment)//隱藏
//事物添加
//預設顯示首頁 其他頁面隱藏
//提交
.commit();
//獲取管理類
這樣就可以顯示了,模仿微信我的界面佈局,用點擊我的按鈕,載入fragment佈局。滾動列表展示功能等。
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/list_my_menu"
android:layout_marginLeft="10dp"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginLeft="10dp">
<TextView
android:id="@+id/txt_my_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的服務"
android:textSize="24sp"
android:textColor="#000000"
android:paddingTop="18dp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#D8DDE1"
android:layout_below="@+id/txt_my_menu"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"></View>
</RelativeLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp">
<TextView
android:id="@+id/txt_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的設置"
android:textSize="24sp"
android:textColor="#000000"
android:paddingTop="18dp"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
我的界面fragment.java
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_me,container,false);
}
添加廣告
在佈局文件中添加ViewPager
<android.support.v4.view.ViewPager
android:id="@+id/vpager_main_header_ad"
android:layout_width="match_parent"
android:layout_height="120dp">
</android.support.v4.view.ViewPager>
MainFragment.java
protected ViewPager mVPagerHeaderAd;//廣告頭
//onActivityCreated
mVPagerHeaderAd= (ViewPager) getView().findViewById(R.id.vpager_main_header_ad);
//添加適配器
MainHeaderAdAdapter adapter=new MainHeaderAdAdapter(getActivity(), DataUtil.getHeaderAddInfo(getActivity(),icons));
mVPagerHeaderAd.setAdapter(adapter);
//創建一個適配器文件
public class MainHeaderAdAdapter extends PagerAdapter{
}
//繼承extends PagerAdapter
//再寫兩個方法
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(images.get(position));
return images.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(images.get(position));
}
protected Context context;
protected List<ImageView> images;
public MainHeaderAdAdapter(Context context, List<ImageView> images){
this.context=context;
this.images=images;
}
//添加數據圖片DataUtil
public static List<ImageView> getHeaderAddInfo(Context context, int icons[]){
List<ImageView> datas=new ArrayList<>();
for (int i = 0; i <icons.length ; i++) {
ImageView icon=new ImageView(context);
icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
icon.setImageResource(icons[i]);
datas.add(icon);
}
return datas;
}
排布
protected RecyclerView mRecycleViewMenu;//主菜單
mRecycleViewMenu= (RecyclerView) getView().findViewById(R.id.recycleview_main_menu);
mRecycleViewMenu.setLayoutManager(new GridLayoutManager(getActivity(),4));
MainMenuAdapter mainMenuAdapter=new MainMenuAdapter(getActivity(),DataUtil.getMainMenus(menuIons,menus));
mRecycleViewMenu.setAdapter(mainMenuAdapter);
//
protected String [] menus;
menus=this.getActivity().getResources().getStringArray(R.array.main_menu);
//adpater
extends RecyclerView.Adapter<MainMenuAdapter.MainMenuViewholder>
//onBindViewHolder
// ViewHolder
class MainMenuViewholder extends RecyclerView.ViewHolder{
public ImageView mImgMenuIcon;
public TextView mTextMenuName;
public MainMenuViewholder(@NonNull View itemView) {
super(itemView);
mImgMenuIcon=itemView.findViewById(R.id.img_menu_icon);
mTextMenuName=itemView.findViewById(R.id.txt_menu_name);
}
}
//
public int icon;
public String menuName;
public Menu(int icon,String menuName){
this.icon=icon;
this.menuName=menuName;
}
build.gradler
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
compile 'com.android.support:recyclerview-v7:26.1.0'
}
//compile 'com.android.support:recyclerview-v7:26.1.0'
//implementation 'com.android.support:appcompat-v7:26.1.0'
總結
統一控制項版本,# TravelDemo
編輯 :達叔
定位:分享 Android&Java 知識點