在经过几周的安卓基本控件的学习,在本周我进行了一个小型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图片可滑动。
这是我的界面由于时间关系我里边的名称没有改变当点击登录按钮时会跳转到登录界面
这就是这个简单程序的主要部分自己还差很多很多东西还要继续学习这个是跟着一个教程做的争取下载能够独立完成,接下来我要开始了一些学习网络操作和高级控件