主布局
<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); }