MainActivity、Fragment、布局

本文探讨了在Android应用中如何在MainActivity和Fragment中使用Shape进行圆点的绘制,包括空心圆点和实心圆点的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.myapplication;


import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.example.myapplication.fragment.Fragment1;
import com.example.myapplication.fragment.Fragment2;
import com.example.myapplication.fragment.Fragment3;
import com.example.myapplication.fragment.Fragment4;
import com.example.myapplication.fragment.Fragment5;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private FrameLayout fram;
    private RadioGroup group;
    private RadioButton but1,but2,but3,but4,but5;
    private FragmentManager manager;
    private FragmentTransaction transaction;
    private Fragment f1,f2,f3,f4,f5;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取资源ID
        fram = findViewById(R.id.fram);
        group = findViewById(R.id.group);
        but1 = findViewById(R.id.but1);
        but2 = findViewById(R.id.but2);
        but3 = findViewById(R.id.but3);
        but4 = findViewById(R.id.but4);
        but5 = findViewById(R.id.but5);
        //实现but点击事件
        but1.setOnClickListener(this);
        but2.setOnClickListener(this);
        but3.setOnClickListener(this);
        but4.setOnClickListener(this);
        but5.setOnClickListener(this);

        group.check(R.id.but1);

        //先行运行管理
        getSupportFragmentManager().beginTransaction().replace(R.id.fram,new Fragment1()).commit();
    }

    @Override
    public void onClick(View v) {

            switch (v.getId()){

                case R.id.but1:

                    getSupportFragmentManager().beginTransaction().replace(R.id.fram,new Fragment1()).commit();
                    break;

                 case R.id.but2:

                     getSupportFragmentManager().beginTransaction().replace(R.id.fram,new Fragment2()).commit();
                     break;

                 case R.id.but3:

                     getSupportFragmentManager().beginTransaction().replace(R.id.fram,new Fragment3()).commit();
                     break;

                  case R.id.but4:

                      getSupportFragmentManager().beginTransaction().replace(R.id.fram,new Fragment4()).commit();
                      break;

                   case R.id.but5:

                       getSupportFragmentManager().beginTransaction().replace(R.id.fram,new Fragment5()).commit();
                       break;

                       default:
                       break;
            }
    }

}
//Fragment1
package com.example.myapplication.fragment;


import android.graphics.Color;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.andy.library.ChannelActivity;
import com.andy.library.ChannelBean;
import com.bumptech.glide.Glide;
import com.example.myapplication.Fragment1_Adapter;
import com.example.myapplication.R;
import com.example.myapplication.UserBean;
import com.example.myapplication.utils.HttpUtils;
import com.example.myapplication.utils.JsonBack;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.stx.xhb.xbanner.XBanner;
import com.stx.xhb.xbanner.transformers.Transformer;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;



public class Fragment1 extends Fragment{
    private ViewPager pager;
    private LinearLayout line;
    private HorizontalScrollView hs;
    List<TextView> list;
    private ArrayList<ChannelBean> channelBeans;
    private Button but;
    private XBanner banner;
    private List<String> images = new ArrayList<>();
    private TextView tv;
    private ImageView image1;
    private HttpUtils httpUtils;
    private PullToRefreshListView pullToRefreshListView;
    private Fragment1_Adapter adapter;
    private List<UserBean.ResultBean.DataBean> list1 = new ArrayList<>();
    private Handler handler = new Handler();
    private String path ="http://apis.juhe.cn/cook/query.php?menu=%E8%82%89&dtype=&pn=&rn=&albums=&=&key=bad3cf4b1e59aaac8fb9d893208edc18";
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.activity_fragment1,container,false);
            //获取资源ID
            pager = view.findViewById(R.id.pager);
            line = view.findViewById(R.id.line);
            hs = view.findViewById(R.id.hs);
            but = view.findViewById(R.id.button);
            banner = view.findViewById(R.id.banner);
            pullToRefreshListView =view.findViewById(R.id.pullto);

            initData();
            banners();
            pulltore();
            getData();
            return view;
    }

    //获取数据
    private void getData() {
        HttpUtils.getdata(path, getActivity(), new JsonBack() {
            @Override
            public void getjsondata(String json) {
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(json, UserBean.class);
                Log.i("TAG",json);
                List<UserBean.ResultBean.DataBean> list12 = userBean.getResult().getData();
                Log.i("TAG",list1.size()+"");
                Log.i("TAG",list1.toString());

                list1.addAll(list12);
                adapter.notifyDataSetChanged();

            }
        });
    }
    //上拉下拉多条目
    private void pulltore() {
        pullToRefreshListView.setMode(PullToRefreshListView.Mode.BOTH);

        final ILoadingLayout startLodding = pullToRefreshListView.getLoadingLayoutProxy(true, false);

        startLodding.setPullLabel("下拉刷新");
        startLodding.setRefreshingLabel("正在加载");
        startLodding.setReleaseLabel("放开刷新");

        ILoadingLayout endLodding = pullToRefreshListView.getLoadingLayoutProxy(false, true);
        endLodding.setReleaseLabel("上拉加载");
        endLodding.setLastUpdatedLabel("正在加载");
        endLodding.setReleaseLabel("放开加载");
        //4.接口回调上拉下拉
        Log.i("TAG","ssss");

        pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

            //在下拉完成后被回调
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                    getData();
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            //必须在异步中完成 在列表没有数据的时候,不在请求接口,调用当前方法
                            pullToRefreshListView.onRefreshComplete();
                        }
                    },2000);
                        //last最近的,最后一次update修改/更新
                    startLodding.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));
            }

            //在上拉后被调用
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                getData();
                handler.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        //必须在异步中完成 在列表没有数据的时候,不在请求接口,调用当前方法
                        pullToRefreshListView.onRefreshComplete();
                    }
                },2000);
            }

        });
        adapter = new Fragment1_Adapter(getActivity(), list1);
        pullToRefreshListView.setAdapter(adapter);

    }
    //Xbanner自动轮播
    private void banners() {
        //初始化XBanner中展示的数据
        images.add("https://stc-new.8531.cn/assets/20180626/1529978600270_5b319ee8159bb81749cf4d33.jpeg");
        images.add("https://stc-new.8531.cn/assets/20180625/1529887230415_5b3039fe159bb81749cf3308.jpeg");
        images.add("https://stc-new.8531.cn/assets/20180619/1529410545300_5b28f3f1159bb81749cec372.jpeg");
        images.add("https://stc-new.8531.cn/assets/20180615/1529030875339_5b2328db159bb81749ce6ad9.jpeg");
        images.add("https://stc-new.8531.cn/assets/20180614/1528947670511_5b21e3d6159bb81749ce55b6.jpeg");
        images.add("https://stc-new.8531.cn/assets/20180626/1529969080502_5b3179b8159bb81749cf4885.jpeg");
        //为XBanner绑定数据
        banner.setData(images,null);
        //XBanner适配数据
        banner.setmAdapter(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, View view, int position) {
                Glide.with(getActivity()).load(images.get(position)).into((ImageView)view);

            }
        });
        //设置XBanner的页面切换特效
        banner.setPageTransformer(Transformer.Default);
        //设置XBanner页面切换的时间,即动画时长
        banner.setPageChangeDuration(1000);

    }

    @Override
    public void onResume() {
        super.onResume();
        banner.startAutoPlay();
    }

    @Override
    public void onStart() {
        super.onStart();
        banner.stopAutoPlay();
    }
    //导航栏
    private void initData() {

        list = new ArrayList<>();
        //当前添加栏目的数据
        channelBeans = new ArrayList<>();
        channelBeans.add(new ChannelBean("头条",true));
        channelBeans.add(new ChannelBean("娱乐",true));
        channelBeans.add(new ChannelBean("科技",true));
        channelBeans.add(new ChannelBean("信息",true));
        channelBeans.add(new ChannelBean("八卦",false));
        channelBeans.add(new ChannelBean("上海",false));
        channelBeans.add(new ChannelBean("天津",false));
        //数据的长度
        for(int i = 0;i<channelBeans.size();i++){
            final TextView textView = new TextView(getActivity());
            textView.setText(channelBeans.get(i).getName()+"");
            textView.setTextSize(15);
            textView.setId(i+1000);
            //字体设置点击监听
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int id = view.getId();
                    pager.setCurrentItem(id-1000);

                }
            });
            //刚进程序第一个默认红色,其他为黑色
            if(i == 0){
                textView.setTextColor(Color.RED);
            }else {
                textView.setTextColor(Color.BLACK);
            }

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(50,10,50,10);

            //添加到布局
            line.addView(textView,layoutParams);
            //添加到集合
            list.add(textView);
        }
        //为pager设置适配器
        pager.setAdapter(new Myadapter(getActivity().getSupportFragmentManager()));
        //pager的监听
        pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            //滑动改变颜色
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                //list中存的是 textview
                for(int i = 0;i<list.size();i++){
                    if(position==i){
                        list.get(i).setTextColor(Color.RED);
                    }else {
                        list.get(i).setTextColor(Color.BLACK);
                    }
                }
                //获取当前的textview
                TextView textView = list.get(position);
                //width是每一次滑动的距离+10
                int width = textView.getWidth()+10;
                //让scrollTo滑动 滑动距离是textview之间的距离
                hs.scrollTo(width*position,0);
            }

            @Override
            public void onPageSelected(int position) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //将数据传入频道管理
                ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeans);
            }
        });

    }


     class Myadapter extends FragmentPagerAdapter {
         public Myadapter(FragmentManager fm) {
             super(fm);
         }

         @Override
         public Fragment getItem(int position) {
             return Fragmentone.getinstace(list.get(position).getText().toString());//创建Fragmentone进行传值
         }

         @Override
         public int getCount() {
             return list.size();
         }
     }
}
package com.example.myapplication.fragment;
//fragmentone
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.myapplication.R;

public class Fragmentone extends Fragment {

    public static Fragment getinstace(String title){
        //创建Fragment1
        Fragmentone fragmentone = new Fragmentone();
        //创建bundle
        Bundle bundle = new Bundle();
        bundle.putString("title",title );
        //把值添加到Arguments中
        fragmentone.setArguments(bundle);
        return fragmentone;
    }
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        //得到值 当展示科技的时候 在进行显示空间
        Bundle arguments = getArguments();
        String title = arguments.getString("title");
        TextView textView = new TextView(getActivity());
        textView.setText(title);

        return textView;
    }

}


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".fragment.Fragment1"
    >
//导航栏
<HorizontalScrollView
    android:id="@+id/hs"
    android:layout_width="300dp"
    android:layout_height="50dp"
    android:scrollbars="none"
    >
    <LinearLayout
        android:id="@+id/line"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        ></LinearLayout>
</HorizontalScrollView>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"></android.support.v4.view.ViewPager>
//频道管理按钮
<com.stx.xhb.xbanner.XBanner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:layout_marginTop="54dp"
        app:AutoPlayTime="3000"
        app:pointNormal="@drawable/banner"
        app:pointSelect="@drawable/banners"
        app:pointsContainerBackground="#44AAAAAA"
        app:pointsPosition="CENTER"
        app:tipTextColor="#FFFFFFFF"
        app:tipTextSize="16.0sp" />
//上拉下拉多条目
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pullto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/banner"
        ></com.handmark.pulltorefresh.library.PullToRefreshListView>

</RelativeLayout>

//1.shape圆点空心

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >
    <solid android:color="#fff"/>
    <size android:width="20dp"
        android:height="20dp"/>
    <stroke
        android:color="#f00"
        android:width="2dp"
        />
</shape>

//2.shape圆点实心

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >
    <solid android:color="#f00000"/>
    <size android:width="20dp"
        android:height="20dp"/>
    <stroke
        android:color="#f00"
        android:width="2dp"
        />
</shape>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值