compile 'com.android.support:design:25.3.1'
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.google.code.gson:gson:2.8.2'
public class MainActivity extends AppCompatActivity {
int count=3;
private ImageView img;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
count--;
if (count==0){
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
sendEmptyMessageDelayed(0,1000);
}
};
private CustomView yuan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
yuan = (CustomView) findViewById(R.id.yuan);
ObjectAnimator.ofFloat(yuan, "translationX", 0, 500).setDuration(3000).start();
ObjectAnimator.ofFloat(yuan, "translationY", 0, 1000).setDuration(3000).start();
handler.sendEmptyMessage(0);
}
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setTextSize(10);
paint.setColor(Color.BLUE);
canvas.drawCircle(60, 50, 50, paint);
paint.setStyle(Style.STROKE);
}
public class Main2Activity extends AppCompatActivity {
private TabLayout tab;
private ViewPager vp;
String[] strName=new String[]{"最新日报", "专栏", "热门", "主题日报"};
List<Fragment> flist=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
tab = (TabLayout) findViewById(R.id.tab);
vp = (ViewPager) findViewById(R.id.vp);
settab();
MyAdapter adapter=new MyAdapter(getSupportFragmentManager());
vp.setAdapter(adapter);
tab.setupWithViewPager(vp);
}
private void settab() {
for (int i=0;i<4;i++){
tab.addTab(tab.newTab().setText(strName[i]));
}
flist.add(new Fragment_one());
flist.add(new Fragment_two());
flist.add(new Fragment_three());
flist.add(new Fragment_four());
}
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return flist.get(position);
}
@Override
public int getCount() {
return flist.size();
}
@Override
public CharSequence getPageTitle(int position) {
return strName[position];
}
}
public class MyReAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private Context context;
private List<JBean.TopStoriesBean>list;
private int currentItem = 10*1000;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
currentItem++;
holder3.viewpager.setCurrentItem(currentItem);
if (currentItem == 0){
currentItem = 10;
}else {
sendEmptyMessageDelayed(0,1000);
}
}
};
private ViewHolder3 holder3;
public MyReAdapter(Context context, List<JBean.TopStoriesBean> list) {
this.context = context;
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=null;
RecyclerView.ViewHolder holder=null;
switch (viewType){
case 0:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
holder=new ViewHolder(view);
break;
case 1:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item, parent, false);
holder=new ViewHolder2(view);
break;
case 2:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.vpitem, parent, false);
holder=new ViewHolder3(view);
break;
}
return holder;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)){
case 0:
ViewHolder holder1= (ViewHolder) holder;
Glide.with(context).load(list.get(position).getImage()).into(holder1.img1);
break;
case 1:
ViewHolder2 holder2= (ViewHolder2) holder;
holder2.tv1.setText(list.get(position).getTitle());
holder2.tv2.setText(list.get(position).getId()+"");
Glide.with(context).load(list.get(position).getImage()).into(holder2.img);
break;
case 2:
holder3 = (ViewHolder3) holder;
VpAdapter vpAdapter=new VpAdapter(context,list);
holder3.viewpager.setAdapter(vpAdapter);
((ViewHolder3) holder).viewpager.setCurrentItem(currentItem);
handler.sendEmptyMessage(0);
holder3.viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Log.e("**********",position+"");
switch (position){
case 0:
holder3.raidogroup.check(R.id.rb1);
break;
case 1:
holder3.raidogroup.check(R.id.rb2);
break;
case 2:
holder3.raidogroup.check(R.id.rb3);
break;
case 3:
holder3.raidogroup.check(R.id.rb4);
break;
case 4:
holder3.raidogroup.check(R.id.rb5);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
holder3.raidogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
switch (checkedId){
case R.id.rb1:
holder3.viewpager.setCurrentItem(0);
break;
case R.id.rb2:
holder3.viewpager.setCurrentItem(1);
break;
case R.id.rb3:
holder3.viewpager.setCurrentItem(2);
break;
case R.id.rb4:
holder3.viewpager.setCurrentItem(3);
break;
case R.id.rb5:
holder3.viewpager.setCurrentItem(4);
break;
}
}
});
break;
}
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return 2;
}
if (position%2 == 1) {
return 1;
}
return 0;
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private final ImageView img1;
public ViewHolder(View itemView) {
super(itemView);
img1 = (ImageView) itemView.findViewById(R.id.imageview);
}
}
public class ViewHolder2 extends RecyclerView.ViewHolder{
private final ImageView img;
private final TextView tv1;
private final TextView tv2;
public ViewHolder2(View itemView) {
super(itemView);
img = (ImageView) itemView.findViewById(R.id.img);
tv1 = (TextView) itemView.findViewById(R.id.tv1);
tv2= (TextView) itemView.findViewById(R.id.tv2);
}
}
public class ViewHolder3 extends RecyclerView.ViewHolder{
private final ViewPager viewpager;
private final RadioGroup raidogroup;
private final RadioButton rb1;
private final RadioButton rb2;
private final RadioButton rb3;
private final RadioButton rb4;
private final RadioButton rb5;
public ViewHolder3(View itemView) {
super(itemView);
viewpager = (ViewPager) itemView.findViewById(R.id.viewpager);
raidogroup = (RadioGroup) itemView.findViewById(R.id.radiogroup);
rb1 = (RadioButton) itemView.findViewById(R.id.rb1);
rb2 = (RadioButton) itemView.findViewById(R.id.rb2);
rb3 = (RadioButton) itemView.findViewById(R.id.rb3);
rb4 = (RadioButton) itemView.findViewById(R.id.rb4);
rb5 = (RadioButton) itemView.findViewById(R.id.rb5);
}
}
}
public class VpAdapter extends PagerAdapter {
private Context context;
private List<JBean.TopStoriesBean>list=new ArrayList<>();
public VpAdapter(Context context, List<JBean.TopStoriesBean> list) {
this.context = context;
this.list = list;
}
@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);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
String image = list.get(position%5).getImage();
Glide.with(context).load(image).into(imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
public class Fragment_one extends Fragment {
List<JBean.TopStoriesBean> top_stories;
private View inflate;
private RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
inflate = inflater.inflate(R.layout.fragment,null);
return inflate;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View view = getView();
recyclerView = (RecyclerView) view.findViewById(R.id.re);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
// linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
initData();
}
private void initData() {
OkHttpClient okHttpClient = MyApplivation.okHttpClient();
Request request = new Request.Builder().url("http://news-at.zhihu.com/api/4/news/latest").build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
if (response.isSuccessful()) {
Gson gson = new Gson();
JBean bean = gson.fromJson(json, JBean.class);
top_stories = bean.getTop_stories();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
MyReAdapter re = new MyReAdapter(getActivity(),top_stories);
recyclerView.setAdapter(re);
}
});
}
}
});
}
}
<com.bawei.myapplicationlianxi.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/yuan"
/>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab"></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/vp"
></android.support.v4.view.ViewPager>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/viewpager"
>
</android.support.v4.view.ViewPager>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/radiogroup"
android:gravity="center"
>
<RadioButton
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb1"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb2"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb3"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb4"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb5"
/>
</RadioGroup>