1:首页样式表
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.main.GuideActivity"
android:orientation="vertical">
<androidx.viewpager.widget.ViewPager
android:id="@+id/guide_viewpager"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#c7c7c7"
android:layout_marginTop="200dp"/>
<RadioGroup
android:id="@+id/guide_rg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="150dp"
android:orientation="horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/guide_to_main"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="进入主页"
android:background="#00BCD4"
android:textColor="@color/white"
android:visibility="gone"
android:onClick="toMain"/>
<Button
android:id="@+id/guide_to_net"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="网络设置"
android:background="#00BCD4"
android:textColor="@color/white"
android:layout_marginLeft="150dp"
android:visibility="gone"/>
</LinearLayout>
</LinearLayout>2:创建一个引导页面的Activity
public class GuideActivity extends AppCompatActivity {
private ViewPager mGuideViewpager;
private RadioGroup mGuideRg;
private Button mGuideToMain;
private Button mGuideToNet;
private int[]imgArr = {R.drawable.t1,R.drawable.t2,R.drawable.t3,R.drawable.t4,R.drawable.t5};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
initView();
loadGuideView();
}
//设置viewpager
public void loadGuideView(){
SuperPages superPages = new SuperPages(imgArr.length,mGuideRg,GuideActivity.this) {
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(GuideActivity.this);
imageView.setBackgroundResource(imgArr[position]);
container.addView(imageView);
return imageView;
}
};
mGuideViewpager.setAdapter(superPages);
mGuideRg.check(0);//默认选中第一个
//单选按钮组
mGuideRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
mGuideViewpager.setCurrentItem(checkedId);
if (checkedId == 4){
mGuideToMain.setVisibility(View.VISIBLE);
mGuideToNet.setVisibility(View.VISIBLE);
}
}
});
//viewpager页面改变
mGuideViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mGuideRg.check(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
//初始化视图
public void initView(){
mGuideViewpager = (ViewPager) findViewById(R.id.guide_viewpager);
mGuideRg = (RadioGroup) findViewById(R.id.guide_rg);
mGuideToMain = (Button) findViewById(R.id.guide_to_main);
mGuideToNet = (Button) findViewById(R.id.guide_to_net);
}
//点击进入主页
public void toMain(View view) {
CacheUtils.putBoolean(GuideActivity.this, TO_MAIN);
Intent intent = new Intent(GuideActivity.this, MainActivity.class);
startActivity(intent);
}
}3:设置主界面底部导航栏的样式(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.main.MainActivity"
android:orientation="vertical">
<androidx.viewpager.widget.ViewPager
android:id="@+id/main_viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"/>
<RadioGroup
android:id="@+id/home_rg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<RadioButton
android:id="@+id/home"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="首 页"
android:layout_weight="1"
android:button="@null"
android:background="@drawable/tool_main_normal"
android:textColor="@color/white"
android:textAlignment="center"
android:drawableTop="@drawable/ic_home"/>
<RadioButton
android:id="@+id/all_services"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="全部服务"
android:layout_weight="1"
android:button="@null"
android:background="@drawable/tool_main_normal"
android:textColor="@color/white"
android:drawableTop="@drawable/ic_home"
android:textAlignment="center"/>
<RadioButton
android:id="@+id/poor"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="精准扶贫"
android:layout_weight="1"
android:button="@null"
android:background="@drawable/tool_main_normal"
android:textColor="@color/white"
android:drawableTop="@drawable/ic_home"
android:textAlignment="center"/>
<RadioButton
android:id="@+id/news"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="新 闻"
android:layout_weight="1"
android:button="@null"
android:background="@drawable/tool_main_normal"
android:textColor="@color/white"
android:drawableTop="@drawable/ic_home"
android:textAlignment="center"/>
<RadioButton
android:id="@+id/home_person"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="个人中心"
android:layout_weight="1"
android:button="@null"
android:background="@drawable/tool_main_normal"
android:textColor="@color/white"
android:drawableTop="@drawable/ic_home"
android:textAlignment="center"/>
</RadioGroup>
</LinearLayout>4:在主界面MainActivity(在此中要创建5个fragment)
public class MainActivity extends AppCompatActivity {
private ViewPager mMainViewpager;
private RadioButton mHome;
private RadioButton mAllServices;
private RadioButton mPoor;
private RadioButton mNews;
private RadioButton mHomePerson;
private RadioGroup mHomeRg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
public void initData(){
ArrayList<Fragment> fragments = new ArrayList<>();
fragments.add(homeFragment);
fragments.add(allServiceFragment);
fragments.add(poorFragment);
fragments.add(newsFragment);
fragments.add(personFragment);
//绑定
FragmentPagerAdapter fragmentPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
};
mMainViewpager.setAdapter(fragmentPagerAdapter);
//页面改变事件
mMainViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mHome.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
mAllServices.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
mPoor.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
mNews.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
mHomePerson.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
switch (position){
case 0:
mHome.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
break;
case 1:
mAllServices.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
break;
case 2:
mPoor.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
break;
case 3:
mNews.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
break;
case 4:
mHomePerson.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mHomeRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.home:
mMainViewpager.setCurrentItem(0,true);
break;
case R.id.all_services:
mMainViewpager.setCurrentItem(1,true);
break;
case R.id.poor:
mMainViewpager.setCurrentItem(2,true);
break;
case R.id.news:
mMainViewpager.setCurrentItem(3,true);
break;
case R.id.home_person:
mMainViewpager.setCurrentItem(4,true);
break;
}
}
});
}
public void initView(){
mHomeRg = (RadioGroup) findViewById(R.id.home_rg);
mMainViewpager = (ViewPager) findViewById(R.id.main_viewpager);
mHome = (RadioButton) findViewById(R.id.home);
mAllServices = (RadioButton) findViewById(R.id.all_services);
mPoor = (RadioButton) findViewById(R.id.poor);
mNews = (RadioButton) findViewById(R.id.news);
mHomePerson = (RadioButton) findViewById(R.id.home_person);
}
}5:设置主页对应的fragment的样式表
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.home.HomeFragment"
android:orientation="vertical"
android:background="#E6E5E5">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:background="#00BCD4">
<EditText
android:id="@+id/home_search"
android:layout_width="250dp"
android:layout_height="40dp"
android:background="@drawable/bg_edt_home"
android:hint="请输入搜索内容"
android:textAlignment="center"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:layout_gravity="center"
android:layout_marginLeft="60dp"
android:imeOptions="actionSearch"/>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/load_home"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"/>
<androidx.viewpager.widget.ViewPager
android:id="@+id/home_viewpager"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<RadioGroup
android:id="@+id/home_rg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="150dp"
android:layout_marginTop="180dp"/>
</FrameLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="应用服务"
android:layout_marginTop="10dp"/>
<GridView
android:id="@+id/home_services"
android:layout_width="match_parent"
android:layout_height="140dp"
android:numColumns="5"
android:layout_marginTop="10dp"
android:background="@drawable/bg_normal"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="热点"
android:layout_marginTop="10dp"/>
<GridView
android:id="@+id/home_hot"
android:layout_width="match_parent"
android:layout_height="140dp"
android:numColumns="2"
android:layout_marginTop="10dp"
android:background="@drawable/bg_normal"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="新闻"
android:layout_marginTop="10dp"/>
<com.google.android.material.tabs.TabLayout
android:id="@+id/home_tab"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/bg_normal"
android:layout_marginTop="10dp"/>
<androidx.viewpager.widget.ViewPager
android:id="@+id/home_news"
android:layout_width="match_parent"
android:layout_height="600dp"
android:background="@drawable/bg_normal"
android:layout_marginTop="10dp"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
6:服务元素的样式表(item_home_services)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:id="@+id/service_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="10dp"/>
<TextView
android:id="@+id/service_name"
android:layout_width="60dp"
android:layout_height="wrap_content" />
</LinearLayout>7:热点元素的样式(item_hot_news)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<ImageView
android:id="@+id/hot_img"
android:layout_width="100dp"
android:layout_height="70dp"
android:scaleType="fitXY"/>
<TextView
android:id="@+id/hot_txt"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"/>
</LinearLayout>8:回到首页的fragment
public class HomeFragment extends Fragment {
private EditText mHomeSearch;
private ViewPager mHomeViewpager;
private GridView mHomeServices;
private GridView mHomeHot;
private TabLayout mHomeTab;
private ViewPager mHomeNews;
private ProgressBar load_home;
private RadioGroup home_rg;
Handler handler = new Handler(Looper.myLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case HOME_ROTATION_WHAT:
loadHomeRotation();
load_home.setVisibility(View.GONE);
break;
case SERVICE_ICON_WHAT:
loadServicesIcon();
break;
case HOT_NEWS_WHAT:
loadHotNews();//热点新闻
loadNews();//新闻列表
break;
case NEWS_TYPE_WHAT:
newsType = (NewsType) msg.obj;
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
mHomeSearch = (EditText) view.findViewById(R.id.home_search);
mHomeViewpager = (ViewPager) view.findViewById(R.id.home_viewpager);
mHomeServices = (GridView) view.findViewById(R.id.home_services);
mHomeHot = (GridView) view.findViewById(R.id.home_hot);
mHomeTab = (TabLayout) view.findViewById(R.id.home_tab);
mHomeNews = (ViewPager) view.findViewById(R.id.home_news);
load_home = view.findViewById(R.id.load_home);
home_rg = view.findViewById(R.id.home_rg);
//绑定
mHomeTab.setupWithViewPager(mHomeNews);
mHomeServices.setOnItemClickListener(new servicesItemClick());
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initData();
}
//初始化数据
public void initData() {
new initHomeHttp(handler).homeRotationData();
new initHomeHttp(handler).servicesData();
new initHomeHttp(handler).newsTypeData();
new initHomeHttp(handler).newsData();
}
//设置页面跳转
class servicesItemClick implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (homeServices.getRows().get(position).getServiceName()){
case "看电影":
Intent intentMovie = new Intent(getContext(), MovieActivity.class);
startActivity(intentMovie);
return;
case "生活缴费":
Intent intentPay = new Intent(getContext(), LivePayActivity.class);
startActivity(intentPay);
return;
}
String name = homeServices.getRows().get(position).getServiceName();
SkipActivity.skipEmptyActivity(name,getContext());
}
}
//设置新闻列表
public void loadNews(){
List<NewsInfo.RowsDTO> rows = newsInfo.getRows();
NewsAdapter newsAdapter = new NewsAdapter(getContext(),newsType.getData(),rows);
mHomeNews.setAdapter(newsAdapter);
}
//设置热点新闻
public void loadHotNews() {
ArrayList<NewsInfo.RowsDTO> rowsDTOS = new ArrayList<>();
for (int i = 0; i < newsInfo.getRows().size(); i++) {
if (newsInfo.getRows().get(i).getHot().equals("Y")) {
rowsDTOS.add(newsInfo.getRows().get(i));
}
}
SuperBase superBase = new SuperBase(2) {
private ImageView mHotImg;
private TextView mHotTxt;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_hot_news,parent,false);
mHotImg = (ImageView) convertView.findViewById(R.id.hot_img);
mHotTxt = (TextView) convertView.findViewById(R.id.hot_txt);
new GetNetImage(getContext(),rowsDTOS.get(position).getCover(),mHotImg);
mHotTxt.setText(rowsDTOS.get(position).getTitle());
return convertView;
}
};
mHomeHot.setAdapter(superBase);
}
//设置应用服务
public void loadServicesIcon() {
//排序
Collections.sort(homeServices.getRows(), new Comparator<HomeServices.RowsDTO>() {
@Override
public int compare(HomeServices.RowsDTO o1, HomeServices.RowsDTO o2) {
return o2.getId() - o1.getId();
}
});
SuperBase superBase = new SuperBase(10) {
private ImageView mServiceIcon;
private TextView mServiceName;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_home_services, parent, false);
mServiceIcon = (ImageView) convertView.findViewById(R.id.service_icon);
mServiceName = (TextView) convertView.findViewById(R.id.service_name);
if (position == 0) {
mServiceIcon.setBackgroundResource(R.drawable.img_home3);
} else {
new GetNetImage(getContext(), homeServices.getRows().get(position).getImgUrl(), mServiceIcon);
}
mServiceName.setText(homeServices.getRows().get(position).getServiceName());
return convertView;
}
};
mHomeServices.setAdapter(superBase);
}
//设置主页轮播图
public void loadHomeRotation() {
ArrayList<ImageView> imageViews = new ArrayList<>();
for (int i = 0; i < homeRotationMain.getRows().size(); i++) {
ImageView imageView = new ImageView(getContext());
new GetNetImage(getContext(), homeRotationMain.getRows().get(i).getAdvImg(), imageView);
imageViews.add(imageView);
}
SuperPages superPages = new SuperPages(imageViews.size(),home_rg,getContext()) {
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = imageViews.get(position);
container.addView(imageView);
return imageView;
}
};
mHomeViewpager.setAdapter(superPages);
home_rg.check(0);
mHomeViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
home_rg.check(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}版权声明:本文为m0_52625686原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。