频道管理+自动轮播+上下拉

主布局


<FrameLayout
    android:id="@+id/fra"
    android:layout_weight="9"
    android:layout_width="match_parent"
    android:layout_height="0dp"></FrameLayout>

<RadioGroup
    android:id="@+id/rad"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="horizontal">

    <RadioButton
        android:id="@+id/rad1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:text="1" />

    <RadioButton
        android:id="@+id/rad2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:gravity="center"
        android:text="1" />
</RadioGroup>

MainActivity

public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private RadioGroup radioGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_main );

        radioGroup = (RadioGroup) findViewById ( R.id.rad );

        radioGroup.setOnCheckedChangeListener ( new RadioGroup.OnCheckedChangeListener ( ) {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i){
                    case R.id.rad1 :
                        getSupportFragmentManager().beginTransaction().replace(R.id.fra,new Fra1 ()).commit();
                        break;
                    case R.id.rad2 :
                        getSupportFragmentManager().beginTransaction().replace(R.id.fra,new Fra2 ()).commit();
                        break;
                    case R.id.rad3 :
                        getSupportFragmentManager().beginTransaction().replace(R.id.fra,new Fra3 ()).commit();
                        break;
                    case R.id.rad4 :
                        getSupportFragmentManager().beginTransaction().replace(R.id.fra,new Fra4 ()).commit();
                        break;
                    case R.id.rad5 :
                        getSupportFragmentManager().beginTransaction().replace(R.id.fra,new Fra5 ()).commit();
                        break;

                }
            }
        } );

    }
}
 

fraone布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"

    android:orientation="vertical"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="horizontal"
        android:id="@+id/l"

        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <HorizontalScrollView
            android:layout_weight="9"
            android:id="@+id/hor"
            android:scrollbars="none"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout
                android:id="@+id/lin"
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"></LinearLayout>
        </HorizontalScrollView>
        <Button
            android:layout_weight="1"
            android:id="@+id/bu"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:text="+"
            />
    </LinearLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout>

Fra1使用

public class Fra1 extends Fragment {
    private HorizontalScrollView horizontalScrollView;
    private LinearLayout linearLayout;
    private ViewPager viewPager;
    private List<TextView> list;
    Dao dao;
    private Button button;
    private String[] data = {"头条","娱乐","新闻","动漫","视频","电影","电视剧","世界杯"};
    private List<ChannelBean> channelBeans = new ArrayList <> ();




    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate ( R.layout.fraone,container,false );

        horizontalScrollView = view.findViewById ( R.id.hor );
        linearLayout = view.findViewById ( R.id.lin );
        viewPager = view.findViewById ( R.id.viewpager );
        button = view.findViewById ( R.id.bu );
        Dao dao = new Dao (getActivity ());
        list = 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 ( "经济",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++){
            dao.add ( channelBeans.get ( i ).getName () );
            TextView textView = new TextView ( getActivity () );
            textView.setText ( channelBeans.get ( i ).getName () );
            textView.setTextSize ( 20 );
            textView.setId ( i+100 );
            textView.setOnClickListener ( new View.OnClickListener ( ) {
                @Override
                public void onClick(View v) {
                    int id = v.getId ();
                    viewPager.setCurrentItem ( id-100 );

                }
            } );
            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 );
            linearLayout.addView ( textView,layoutParams );
            list.add ( textView );

        }
        List<UserBean> list5 = dao.select ();
        for (int i = 0;i<list5.size ();i++){
            String name = list5.get ( i ).getName ();

        }
        viewPager.setAdapter ( new Myadpter(getActivity ().getSupportFragmentManager ()) );
            viewPager.setOnPageChangeListener ( new ViewPager.OnPageChangeListener ( ) {
                @Override
                public void onPageScrolled(int i, float v, int i1) {
                    for (int o = 0;o<Fra1.this.list.size ();o++){
                        if (i==o){
                            Fra1.this.list.get ( o ).setTextColor ( Color.RED );
                        }else {
                            Fra1.this.list.get ( o ).setTextColor ( Color.BLACK );
                        }
                    }
                    TextView textView = Fra1.this.list.get ( i );
                    int width = textView.getWidth ()+10;
                    horizontalScrollView.scrollTo ( width*i,0 );
                }

                @Override
                public void onPageSelected(int i) {

                }

                @Override
                public void onPageScrollStateChanged(int i) {

                }
            } );
            button.setOnClickListener ( new View.OnClickListener ( ) {
                @Override
                public void onClick(View v) {
                    ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeans);
                }
            } );
        return view;
    }
    class Myadpter extends FragmentPagerAdapter {
        public Myadpter(FragmentManager fm) {
            super ( fm );
        }

        @Override
        public Fragment getItem(int position) {

            return com.bwie.tianpeng.myapplicationlainxi.frament.Fragment.getinstance ( list.get ( position ).getText ().toString () );
        }

        @Override
        public int getCount() {
            return list.size ();
        }
    }
}
 
创建Sql

class Sql extends SQLiteOpenHelper{
    public Sql(Context context) {
        super(context, "user.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table user(id integer primary key autoincrement," +
                "name text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
 
Dao Sql语句
public class Dao {
    Sql sql ;
    SQLiteDatabase database;
    public Dao(Context context) {
        sql = new Sql(context);
        database = sql.getReadableDatabase();
    }
    public  void  add(String name){
        ContentValues values = new ContentValues();
        values.put("name",name);
        database.insert("user",null,values);
    }
    public List<UserBean> select(){
        List<UserBean> list = new ArrayList<>();
        UserBean userBean;
        Cursor query = database.query("user", null, null, null, null, null, null);
        while (query.moveToNext()){
            String name = query.getString(query.getColumnIndex("name"));
            userBean = new UserBean(name);
            list.add(userBean);
        }
        return list;
    }
}

Fragment添加网址

public class Fragment extends android.support.v4.app.Fragment {

    private ViewPager viewPager;
    private int page = 1;
    Mybase mybase;
    private Handler handler1 = new Handler (){};
    private PullToRefreshListView pullToRefreshListView;
    private int i ;
    private List<User1.DataBean> listt = new ArrayList<> ();
    private List<String> list1 = new ArrayList<>();
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            i = viewPager.getCurrentItem();
            viewPager.setCurrentItem(i+1);
            handler.sendEmptyMessageDelayed(1,3000);
        }
    };

    public static android.support.v4.app.Fragment getinstance(String title){

        Fragment fragment = new Fragment();
        Bundle bundle = new Bundle ();
        bundle.putString("title",title);
        fragment.setArguments(bundle);
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        Bundle arguments = getArguments ();
        String title = arguments.getString ( "title" );
        if (title.equals ( "经济" )){
            View view = inflater.inflate ( R.layout.fragment,container,false );
            viewPager = view.findViewById ( R.id.pager );
            pullToRefreshListView = view.findViewById ( R.id.pull );
            Httputil.getdata("http://www.wanandroid.com/tools/mockapi/6523/article_channel_list",getActivity (),new Back(){
                @Override
                public void setjson(String s) {
                    Gson gson = new Gson();
                    User json = gson.fromJson(s, User.class);
                    List<User.DataBean.FocusListBean> list = json.getData().getFocus_list();
                    for(int i = 0 ;i<list.size();i++){
                        String url = list.get(i).getImage_url();
                        list1.add(url);
                    }
                    Mybasepager mybasepager = new Mybasepager(list1,getActivity());
                    viewPager.setAdapter(mybasepager);
                    handler.sendEmptyMessageDelayed(1,3000);
                }
            });
            pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
            ILoadingLayout loadingLayoutProxy = pullToRefreshListView.getLoadingLayoutProxy(true,false);
            loadingLayoutProxy.setPullLabel("下拉刷新");
            loadingLayoutProxy.setRefreshingLabel("正在刷新");
            loadingLayoutProxy.setReleaseLabel("放开刷新");
            ILoadingLayout loadingLayoutProx = pullToRefreshListView.getLoadingLayoutProxy(false,true);
            loadingLayoutProx.setPullLabel("上拉加载");
            loadingLayoutProx.setRefreshingLabel("正在加载");
            loadingLayoutProx.setReleaseLabel("放开加载");
            pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
                @Override
                public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                    page = 1;
                    getdata();
                    handler1.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            pullToRefreshListView.onRefreshComplete();
                        }
                    },2000);
                }


                public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                    page+=1;
                    getdata();
                    handler1.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            pullToRefreshListView.onRefreshComplete();
                        }
                    },5000);
                }
            });
            mybase = new Mybase(listt,getActivity());
            pullToRefreshListView.setAdapter(mybase);
            getdata();
            return view;

        }
        return null;
    }
    public void getdata(){
        Httputil.getdata("https://www.apiopen.top/meituApi?page="+page, getActivity(), new Back() {
            @Override
            public void setjson(String s) {
                Gson gson = new Gson();
                User1 user1 = gson.fromJson(s, User1.class);
                List<User1.DataBean> data = user1.getData();
                if(page==1){
                    listt.clear();
                }
                listt.addAll(data);
                mybase.notifyDataSetChanged();
            }
        });
    }
}

Mybase适配器

class Mybase  extends BaseAdapter{
    private List<User1.DataBean> list;
    private Context context;

    public Mybase(List <User1.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return list.size ();
    }

    @Override
    public Object getItem(int position) {
        return list.get ( position );
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView==null){
            convertView = View.inflate(context, R.layout.mybase,null);
            holder = new ViewHolder();
            holder.imageView = convertView.findViewById(R.id.imageView);
            holder.textView = convertView.findViewById(R.id.textView);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.textView.setText(list.get(position).getType());
        ImageLoader.getInstance().displayImage(list.get(position).getUrl(),holder.imageView,Mapp.getoPetions());
        return convertView;
    }
    class ViewHolder{
        ImageView imageView;
        TextView textView;
    }
}

适配器布局

<ImageView
    android:id="@+id/imageView"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    app:srcCompat="@mipmap/ic_launcher" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/imageView"
    android:text="TextView" />

UserBean

class UserBean {
    private String name;

    public UserBean(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Tostring

class Tostring {
    public static String getstring(InputStream inputStream) throws IOException {
        BufferedReader reader = new BufferedReader (new InputStreamReader (inputStream));
        StringBuilder stringBuilder = new StringBuilder();
        String s= null;
        while ((s=reader.readLine())!=null){
            stringBuilder.append(s);
        }
        reader.close();
        return stringBuilder.toString();
    }
}
 
Mybasepager
class Mybasepager extends PagerAdapter{
    private List<String> list;
    private Context context;
    public Mybasepager(List <String> list, Context context) {
        this.list = list;
        this.context = context;
    }



    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        ImageView imageView = new ImageView ( context );
        ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView,Mapp.getoPetions());
        container.addView ( imageView );

        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}
Mapp
public class Mapp extends Application {
    private Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        //初始化imageLoader框架
        this.context =context;
        ss();
    }
    public void ss(){

        ImageLoaderConfiguration config = new ImageLoaderConfiguration

                .Builder(this)

                .memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每个缓存文件的最大长宽

                .threadPoolSize(5)//线程池内加载的数量

                .threadPriority(Thread.NORM_PRIORITY - 2)

                .denyCacheImageMultipleSizesInMemory()

                .memoryCache(new UsingFreqLimitedMemoryCache (2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现

                .memoryCacheSize(2 * 1024 * 1024)

                .discCacheSize(50 * 1024 * 1024)

                .discCacheFileNameGenerator(new Md5FileNameGenerator ())//将保存的时候的URI名称用MD5 加密

                .tasksProcessingOrder( QueueProcessingType.LIFO)

                .discCacheFileCount(100) //缓存的文件数量

                .defaultDisplayImageOptions( DisplayImageOptions.createSimple())

                .writeDebugLogs() // Remove for release app

                .build();//开始构建

// Initialize ImageLoader with configuration.

        ImageLoader.getInstance().init(config);//全局初始化此配置
    }
    public static DisplayImageOptions getoPetions(){
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading( R.drawable.ic_launcher_background) // 设置图片下载期间显示的图片
                .showImageForEmptyUri(R.drawable.ic_launcher_background) // 设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.drawable.ic_launcher_background) // 设置图片加载或解码过程中发生错误显示的图片
                .resetViewBeforeLoading(false)  // default 设置图片在加载前是否重置、复位
                .delayBeforeLoading(1000)  // 下载前的延迟时间
                .cacheInMemory(false) // default  设置下载的图片是否缓存在内存中
                .cacheOnDisk(false) // default  设置下载的图片是否缓存在SD卡中
                .considerExifParams(false) // default
                .imageScaleType( ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
                .bitmapConfig( Bitmap.Config.ARGB_8888) // default 设置图片的解码类型
                .displayer(new SimpleBitmapDisplayer ()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)
                .displayer(new RoundedBitmapDisplayer (300))
                .handler(new Handler ()) // default
                .build();
        return options;
    }
}
Httputil

class Httputil {
    public  static  void getdata(String url, Context context, final Back back){
        AsyncTask<String,Void,String> asyncTask = new AsyncTask<String, Void, String> () {
            @Override
            protected String doInBackground(String... strings) {
                try {
                    URL url1 = new URL (strings[0]);
                    HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
                    connection.setRequestMethod("GET");
                    int code = connection.getResponseCode();
                    if(code==200){
                        InputStream stream = connection.getInputStream();
                        String getstring = Tostring.getstring(stream);
                        return getstring;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                back.setjson(s);
            }
        };
        asyncTask.execute(url);
    }
}
 
Back

public interface Back {
    public void setjson(String s);
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值