安卓学习之幕淘旅游案例

    

  在经过几周的安卓基本控件的学习,在本周我进行了一个小型app的开发,主要是一个类型旅游网站的应用程序。

一、基本的解题思路

        代码部分主要分为五部分分别是adapter(主要是适配器),entity(实体类),util(数据),fragment,和几个activit

  下边主要展示几个部分的代码

      adapetr分为两个:

          MainHeaderAdapetr:

package com.eb.imoocmutao.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

public class MainHeaderAdAdpater extends PagerAdapter {

    protected Context context;
    protected List<ImageView> images;

    public MainHeaderAdAdpater(Context context, List<ImageView> images) {
        this.context = context;
        this.images = images;
    }

    @Override
    public int getCount() {
        return null!=images?images.size():0;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
            container.addView(images.get(position));
        return images.get(position);
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(images.get(position));
    }
}

  和MainMenuViewHolder

    

package com.eb.imoocmutao.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.eb.imoocmutao.R;
import com.eb.imoocmutao.entity.Menu;

import java.util.List;

public class MainMenuAdapter extends RecyclerView.Adapter<MainMenuViewHolder>{
   protected Context context;
   protected List<Menu>menus;

    public MainMenuAdapter(Context context, List<Menu> menus) {
        this.context = context;
        this.menus = menus;
    }

    @NonNull
    @Override
    public MainMenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new MainMenuViewHolder(LayoutInflater.from(context).inflate(R.layout.item_main_menu,null));
    }

    @Override
    public void onBindViewHolder(@NonNull MainMenuViewHolder holder, int position) {
    holder.imageView.setImageResource(menus.get(position).icon);
    holder.textView.setText(menus.get(position).menuName);
    }

    @Override
    public int getItemCount() {
        return null!=menus?menus.size():0;
    }
}

class MainMenuViewHolder extends RecyclerView.ViewHolder{
    public ImageView imageView;
    public TextView textView;

    public MainMenuViewHolder(@NonNull View itemView) {
        super(itemView);

        imageView=itemView.findViewById(R.id.img_menu_icon);
        textView=itemView.findViewById(R.id.text_menu_name);

    }
}

  和主要的两个fragment

MainFrgament

package com.eb.imoocmutao.fragment;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.eb.imoocmutao.R;
import com.eb.imoocmutao.adapter.MainHeaderAdAdpater;
import com.eb.imoocmutao.adapter.MainMenuAdapter;
import com.eb.imoocmutao.util.DataUtil;

/**
 * A simple {@link Fragment} subclass.
 */
public class MainFragment extends Fragment {
    int []icons={R.mipmap.header_pic_ad1,R.mipmap.header_pic_ad2,R.mipmap.header_pic_ad1};
    int []menuicons={R.mipmap.menu_airport,R.mipmap.menu_car,R.mipmap.menu_course,R.mipmap.menu_hatol,R.mipmap.menu_nearby,R.mipmap.me_menu_go,R.mipmap.menu_second_ticket,R.mipmap.menu_train};
    String []menusName;
    RecyclerView recyclerView;
    ViewPager viewPager;
    public MainFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_main, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        menusName=this.getActivity().getResources().getStringArray(R.array.main_menu);

        super.onActivityCreated(savedInstanceState);
        viewPager=getView().findViewById(R.id.vpager_main_header_ad);
        recyclerView=getView().findViewById(R.id.recycleview_main_menu);
        MainHeaderAdAdpater adAdpater=new MainHeaderAdAdpater(getActivity(), DataUtil.getHeaderAddInfo(getActivity(),icons));
        viewPager.setAdapter(adAdpater);
        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),4));
        MainMenuAdapter mainMenuAdapter=new MainMenuAdapter(getActivity(),DataUtil.getMainMenus(menuicons,menusName));
        recyclerView.setAdapter(mainMenuAdapter);

    }
}

  还有MeFragment

package com.eb.imoocmutao.fragment;

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.eb.imoocmutao.LoginActivity;
import com.eb.imoocmutao.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class MeFragment extends Fragment {
    Button button;
    public MeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_me, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        button=getView().findViewById(R.id.btn_login);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), LoginActivity.class));
            }
        });
    }
}

  在整个写的过程中我主要最为喜欢的用到了一个闪屏就是例如我们打开某一个app以后会有一个广告页一样持续几秒他其实很简单值是一个代码

运动handler中的delay函数

安卓学习之幕淘旅游案例

 

 

下边主要展示几个界面

我最爱的闪屏

安卓学习之幕淘旅游案例

 

 

安卓学习之幕淘旅游案例这是一个三个按钮分别代表了三个界面主要写在了Mainavticiy中本来想用的TabHost后来没有用就直接了用三个LinearLayout更加方便了还有和当你的控制碰到首页说着其他的时候会变色更加切合实际了这个也比较简单直接在drawable中改变状态是改变颜色

安卓学习之幕淘旅游案例这是首页的主要界面他是一个可滑动的ScrollView下边还有一些不一样的图片

安卓学习之幕淘旅游案例这个是运用了一个viewpager图片可滑动。

 

 

安卓学习之幕淘旅游案例这是我的界面由于时间关系我里边的名称没有改变当点击登录按钮时会跳转到登录界面

 

安卓学习之幕淘旅游案例

 

这就是这个简单程序的主要部分自己还差很多很多东西还要继续学习这个是跟着一个教程做的争取下载能够独立完成,接下来我要开始了一些学习网络操作和高级控件

 

安卓学习之幕淘旅游案例

上一篇:IOS中将对象属性列表归档成一个plist文件中


下一篇:移动端布局基础,流式布局