javaCompileOptions { annotationProcessorOptions { includeCompileClasspath true } }
android.enableAapt2=false
package com.example.six; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.six.animee.AnimationFragment; import com.example.six.custom.ViewFragment; import com.example.six.net.NetFragment; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity { @BindView(R.id.main_tab) TabLayout tabLayout; @BindView(R.id.main_vp) ViewPager viewPager; List<String>titleList = new ArrayList<>(); List<Fragment>fragmentList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); initPager(); } /** * 初始化ViewPager页面 * */ private void initPager() { titleList.add("动画"); titleList.add("自定义控件"); titleList.add("网络数据"); fragmentList.add(new AnimationFragment()); fragmentList.add(new ViewFragment()); fragmentList.add(new NetFragment()); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), titleList, fragmentList); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); } }
package com.example.six; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; /** * Created by Administrator on 2018/4/4. */ public class MyPagerAdapter extends FragmentPagerAdapter{ private List<String>titleList; private List<Fragment>fragmentList; public MyPagerAdapter(FragmentManager fm, List<String> titleList, List<Fragment> fragmentList) { super(fm); this.titleList = titleList; this.fragmentList = fragmentList; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } }//动画
package com.example.six.animee; import android.animation.ObjectAnimator; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import com.example.six.R; import butterknife.BindView; import butterknife.ButterKnife; /** * A simple {@link Fragment} subclass. */ public class AnimationFragment extends Fragment implements View.OnClickListener{ @BindView(R.id.btn_alpha) Button alphaBtn; @BindView(R.id.btn_scale) Button scaleBtn; @BindView(R.id.btn_rotate) Button rotateBtn; @BindView(R.id.btn_tran) Button tranBtn; @BindView(R.id.anime_iv) ImageView iv; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view= inflater.inflate(R.layout.fragment_animation, container, false); ButterKnife.bind(this,view); alphaBtn.setOnClickListener(this); scaleBtn.setOnClickListener(this); tranBtn.setOnClickListener(this); rotateBtn.setOnClickListener(this); return view; } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_alpha: ObjectAnimator alpha = ObjectAnimator.ofFloat(iv, "alpha", 1.0f, 0.5f); alpha.setDuration(2000); alpha.start(); break; case R.id.btn_scale: ObjectAnimator scaleX = ObjectAnimator.ofFloat(iv, "scaleX", 1.0f, 2.0f); scaleX.setDuration(2000); scaleX.start(); break; case R.id.btn_tran: ObjectAnimator translationY = ObjectAnimator.ofFloat(iv, "translationY", 0, 300); translationY.setDuration(2000); translationY.start(); break; case R.id.btn_rotate: ObjectAnimator rotation = ObjectAnimator.ofFloat(iv, "rotation", 0, 180, 180, 0); rotation.setDuration(2000); rotation.start(); break; } } }//自定义
package com.example.six.custom; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.example.six.R; /** * Created by Administrator on 2018/4/4. */ public class TitleView extends RelativeLayout{ RelativeLayout layout; TextView centerTv,leftTv,rightTv; ImageView leftIv,rightIv; public TitleView(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title_layout,this); layout = findViewById(R.id.title_layout); centerTv = (TextView) findViewById(R.id.center_tv); leftTv = (TextView) findViewById(R.id.left_tv); rightTv = (TextView) findViewById(R.id.right_tv); leftIv = (ImageView) findViewById(R.id.left_iv); rightIv = (ImageView) findViewById(R.id.right_iv); // 自定义属性 TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TitleView); int bgColor = typedArray.getColor(R.styleable.TitleView_bgColor, Color.BLUE); layout.setBackgroundColor(bgColor); String title = typedArray.getString(R.styleable.TitleView_titleText); centerTv.setText(title); int centercolor = typedArray.getColor(R.styleable.TitleView_titleTextColor, Color.WHITE); centerTv.setTextColor(centercolor); boolean b = typedArray.getBoolean(R.styleable.TitleView_leftIvVisiable, true); setLeftIvVisiable(b); boolean b2 = typedArray.getBoolean(R.styleable.TitleView_rightIvVisiable, true); setRightIvVisiable(b2); boolean b3 = typedArray.getBoolean(R.styleable.TitleView_leftTvVisiable, false); setLeftTvVisiable(b3); boolean b4 = typedArray.getBoolean(R.styleable.TitleView_rightTvVisiable, false); setRightTvVisiable(b4); int leftColor = typedArray.getColor(R.styleable.TitleView_leftTextColor, Color.WHITE); leftTv.setTextColor(leftColor); int rightcolor = typedArray.getColor(R.styleable.TitleView_rightTextColor, Color.WHITE); rightTv.setTextColor(rightcolor); int leftId = typedArray.getResourceId(R.styleable.TitleView_leftIvRes, R.mipmap.icon_title_bar_filter_focus); leftIv.setImageResource(leftId); int rightId = typedArray.getResourceId(R.styleable.TitleView_rightIvRes, R.mipmap.icon_title_bar_filter_focus); rightIv.setImageResource(rightId); // 回收属性 typedArray.recycle(); } // 设置中心标题的内容 public void setTitleText(String msg){ centerTv.setText(msg); } // 设置左边的内容 public void setLeftText(String msg){ leftTv.setText(msg); } // 设置右边的内容 public void setRightText(String msg){ rightTv.setText(msg); } // 设置左边的图片是否显示 public void setLeftIvVisiable(boolean b){ if (b) { leftIv.setVisibility(VISIBLE); }else{ leftIv.setVisibility(INVISIBLE); } } // 设置右边的图片是否显示 public void setRightIvVisiable(boolean b){ if (b) { rightIv.setVisibility(VISIBLE); }else{ rightIv.setVisibility(INVISIBLE); } } // 设置左边的文字是否显示 public void setLeftTvVisiable(boolean b){ if (b) { leftTv.setVisibility(VISIBLE); }else{ leftTv.setVisibility(INVISIBLE); } } // 设置右边的文字是否显示 public void setRightTvVisiable(boolean b){ if (b) { rightTv.setVisibility(VISIBLE); }else{ rightTv.setVisibility(INVISIBLE); } } // 设置布局的颜色 public void setBgColor(int color){ layout.setBackgroundColor(color); } }
package com.example.six.custom; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.six.R; /** * A simple {@link Fragment} subclass. */ public class ViewFragment extends Fragment { public ViewFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_view, container, false); } }//网络
package com.example.six.net; import java.io.IOException; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by Administrator on 2018/4/4. */ public class HttpUtils { public static String getStringContent(String path){ OkHttpClient client = new OkHttpClient(); //客户端对象 // 获得请求对象 Request request = new Request.Builder().get().url(path).build(); try { // 发起请求,获取响应对象 Response response = client.newCall(request).execute(); if (response.isSuccessful()) { String s = response.body().string(); return s; } } catch (IOException e) { e.printStackTrace(); } return null; } }
package com.example.six.net; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.example.six.R; import com.squareup.picasso.Picasso; import java.util.List; /** * Created by Administrator on 2018/4/4. */ public class NetAdapter extends RecyclerView.Adapter<NetAdapter.NetViewHolder>{ private Context context; private List<NetBean.ArticleListBean>mDatas; public NetAdapter(Context context, List<NetBean.ArticleListBean> mDatas) { this.context = context; this.mDatas = mDatas; } @Override public NetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_net, parent, false); NetViewHolder holder = new NetViewHolder(view); return holder; } @Override public void onBindViewHolder(NetViewHolder holder, int position) { NetBean.ArticleListBean bean = mDatas.get(position); holder.tv.setText(bean.getTitle()); // 显示图片 Picasso.with(context).load(bean.getImgUrl()).into(holder.iv); } @Override public int getItemCount() { return mDatas.size(); } class NetViewHolder extends RecyclerView.ViewHolder{ ImageView iv; TextView tv; public NetViewHolder(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.item_net_iv); tv = (TextView) itemView.findViewById(R.id.item_net_tv); } } }
package com.example.six.net; import java.util.List; /** * Created by Administrator on 2018/4/4. */ public class NetBean { /** * topicRecommendList : [{"headImgUrl":"http://img.moviebase.cn/img/trecommend/2017/10/6629de7abce84b56b916366bc07576c0.jpg@480w","imgUrl":"http://img.moviebase.cn/img/topic/2017/09/b9add2d4aa2d448aa260664e4401a6ba.jpg@!2x.webp","id":"44e9ea47bbd8401590d9a8ae3a3b283b","title":"北美新片","desc":"来自米国院线的最新票房和口碑","isSub":"0","recommendImgUrl":"http://img.moviebase.cn/img/trecommend/2017/10/6629de7abce84b56b916366bc07576c0.jpg@484w","isSubscribe":0,"subscribeNum":2616,"articlesNum":58},{"headImgUrl":"http://img.moviebase.cn/img/topic/2016/10/3a5198f10d074955884995f884ff9403.jpeg@480w","imgUrl":"http://img.moviebase.cn/img/topic/2016/10/6b51c0dbd39641bb90f4058388b24cde.jpeg@!2x.webp","id":"7d99c3dbe09c4d7a94a21708f5db127c","title":"行业观察","desc":"追踪影视热点,揭秘行业内幕","isSub":"0","recommendImgUrl":"http://img.moviebase.cn/img/topic/2016/10/3a5198f10d074955884995f884ff9403.jpeg@484w","isSubscribe":0,"subscribeNum":2809,"articlesNum":582},{"headImgUrl":"http://img.moviebase.cn/img/trecommend/2017/09/93c41c4244c34fa1bc5ce64e3d7c7b36.jpg@480w","imgUrl":"http://img.moviebase.cn/img/topic/2017/09/cf778b9124b24a85ad9ee69d11100618.jpg@!2x.webp","id":"78cc04335e034788a729a4145ff23a97","title":"热映快评","desc":"影院新片,你怎么看?","isSub":"0","recommendImgUrl":"http://img.moviebase.cn/img/trecommend/2017/09/93c41c4244c34fa1bc5ce64e3d7c7b36.jpg@484w","isSubscribe":0,"subscribeNum":2700,"articlesNum":86}] * retCode : 0 * topicSubscribeUpdateNum : 0 * topicSubscribeUpdateList : * requestId : db060f2c-9921-4f39-bece-18dfde06f998 * retMsg : * authorList : [{"id":"0185e0a334e54866bcc423322c02e217","logo":"http://img.moviebase.cn/img/other/2017/09/79174c2dabc94f89983488c09de74e78.jpg@130w","nickname":"手动贩卖机","description":"人不如机器。"},{"id":"4d9e800196cc42b192cec8b914b035f6","logo":"http://img.moviebase.cn/img/other/2017/09/4184a1ba3b12440f86ef6d5ae4cce9aa.jpg@130w","nickname":"坨坨肉","description":"情色电影/Cult片爱好者"},{"id":"6560d69aafc54d45be991b067afca113","logo":"http://img.moviebase.cn/img/other/2017/08/144ad6ffe4bb4d1e940d6291c029aca2.png@130w","nickname":"咸鱼","description":"冷却了CD残了血,在你面前浪来浪去"}] * sourceList : [{"id":"19f2cd89ca904eb69e51f7d6e8a1e679","logo":"http://img.moviebase.cn/img/source/2018/02/c526cc8be95944399a68197c778ee1ab.png@130w","nickname":"巴塞电影","description":"资深电影编辑团队每日为你更新最有品、有料、原创、独家的电影资讯和深度解读。公众号:MovieBase"},{"id":"1700d5e8ba284c30bb4474882d10be8f","logo":"http://img.moviebase.cn/img/source/2018/02/ac0e844d31884a29a289b0e00bf2018b.gif","nickname":"枪稿","description":""},{"id":"3bad3b5588af4002a44383453cc2d862","logo":"http://img.moviebase.cn/img/source/2016/02/b0571f61b1a44fb88d83165299adc3d7.jpeg@130w","nickname":"库布里克的小丑","description":"与其赏析电影,不如享受电影。坚持原创,有时很正经,有时很邪恶~"}] * articleList : [{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/bc1df537a3a540228075e050bb20668c.jpg@353w","id":"0677ba5d32d34ed09c66b5bf8c699edb","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-0677ba5d32d34ed09c66b5bf8c699edb.html?appVersion=1.7.0","pubDate":1520931197,"praiseCount":"54","title":"人间是否已耳聋?20年后,再听1998华语流行神曲","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/bc1df537a3a540228075e050bb20668c.jpg@353w","careateDate":1520913387,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-0677ba5d32d34ed09c66b5bf8c699edb.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/ee7507cd3f304cbe9a8a494b8e54c1a9.jpg@353w","id":"5c0c74ee-9862-40d1-8a40-519dfa2ce338","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-5c0c74ee-9862-40d1-8a40-519dfa2ce338.html?appVersion=1.7.0","pubDate":1521000001,"praiseCount":"50","title":"如果你一生只和一个人做过爱......","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/ee7507cd3f304cbe9a8a494b8e54c1a9.jpg@353w","careateDate":1520994795,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-5c0c74ee-9862-40d1-8a40-519dfa2ce338.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/84448f30aa8242e58502acd20c860adf.jpeg@353w","id":"7843f1d8917c42d9a227e9aab6a156eb","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-7843f1d8917c42d9a227e9aab6a156eb.html?appVersion=1.7.0","pubDate":1521101366,"praiseCount":"31","title":"《水形物语》上映了,打卡必备指南了解一下?","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/84448f30aa8242e58502acd20c860adf.jpeg@353w","careateDate":1521081695,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-7843f1d8917c42d9a227e9aab6a156eb.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/4876b3446c1545b98e6328a215839684.png@353w","id":"04dc6b7b3c9d4aad96d3c01859e5fcc9","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-04dc6b7b3c9d4aad96d3c01859e5fcc9.html?appVersion=1.7.0","pubDate":1521111125,"praiseCount":"30","title":"《雷神3》的逗比导演,不做\u201c石头\u201d做\u201c兔纸\u201d","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/4876b3446c1545b98e6328a215839684.png@353w","careateDate":1521096947,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-04dc6b7b3c9d4aad96d3c01859e5fcc9.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/b2d5e7208e8b4d7e8792c4b4b895adc6.jpeg@353w","id":"0509889d41cb4d88b10428d3bc128614","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-0509889d41cb4d88b10428d3bc128614.html?appVersion=1.7.0","pubDate":1521127450,"praiseCount":"38","title":"《大小谎言》卡司薪水大涨,好莱坞男女薪资平等的时代也许即将到来","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/b2d5e7208e8b4d7e8792c4b4b895adc6.jpeg@353w","careateDate":1521109421,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-0509889d41cb4d88b10428d3bc128614.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/62c76e3adf3540438cc34740591ece32.jpg@353w","id":"385695a8-4f79-435c-af72-89d42f6212ee","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-385695a8-4f79-435c-af72-89d42f6212ee.html?appVersion=1.7.0","pubDate":1521190800,"praiseCount":"35","title":"大型运动色情片,普京主演","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/62c76e3adf3540438cc34740591ece32.jpg@353w","careateDate":1521143137,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-385695a8-4f79-435c-af72-89d42f6212ee.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/219d22e0258949fda1c4f4d466cdaeb7.png@353w","id":"e08f3ac320014e51ae6b12f21bfb3ff7","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-e08f3ac320014e51ae6b12f21bfb3ff7.html?appVersion=1.7.0","pubDate":1521086401,"praiseCount":"39","title":"这部韩国喜剧全程高能,看的时候千万别喝水","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/219d22e0258949fda1c4f4d466cdaeb7.png@353w","careateDate":1521019162,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-e08f3ac320014e51ae6b12f21bfb3ff7.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/369befac36c44ddaa1b1172136fcfe33.gif","id":"462a4b4a07244e05a91b8acabf9afd15","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-462a4b4a07244e05a91b8acabf9afd15.html?appVersion=1.7.0","pubDate":1521127443,"praiseCount":"54","title":"有流量就能拍电影?小花们的电影谁来买单?","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/369befac36c44ddaa1b1172136fcfe33.gif","careateDate":1521107453,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-462a4b4a07244e05a91b8acabf9afd15.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/4ad6ebf78ab14143a959da3fb2df861c.png@353w","id":"1e0ca36fc43745f3a186d6cdf60f74ac","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-1e0ca36fc43745f3a186d6cdf60f74ac.html?appVersion=1.7.0","pubDate":1521172801,"praiseCount":"46","title":"让你们看看即将上映的《犬之岛》鲜血淋漓的原型","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/4ad6ebf78ab14143a959da3fb2df861c.png@353w","careateDate":1521108941,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-1e0ca36fc43745f3a186d6cdf60f74ac.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"},{"imgUrl":"http://img.moviebase.cn/img/poster/2018/03/e2778b7170bc435bb0683205d1637c98.gif","id":"21846954b0c4437bbbd4bbb692d53f7a","articleContentUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-21846954b0c4437bbbd4bbb692d53f7a.html?appVersion=1.7.0","pubDate":1521277202,"praiseCount":"55","title":"每周只能做7秒!101分钟的动画就这么硬肝出来的","description":"","sourceName":"巴塞电影","image":"http://img.moviebase.cn/img/poster/2018/03/e2778b7170bc435bb0683205d1637c98.gif","careateDate":1521197851,"articleUrl":"http://www.moviebase.cn/uread/app/viewArt/viewArt-21846954b0c4437bbbd4bbb692d53f7a.html?appVersion=1.7.0","sourceId":"19f2cd89ca904eb69e51f7d6e8a1e679"}] * articleSubscribeUpdateNum : 0 */ private int retCode; private int topicSubscribeUpdateNum; private String topicSubscribeUpdateList; private String requestId; private String retMsg; private int articleSubscribeUpdateNum; private List<TopicRecommendListBean> topicRecommendList; private List<AuthorListBean> authorList; private List<SourceListBean> sourceList; private List<ArticleListBean> articleList; public int getRetCode() { return retCode; } public void setRetCode(int retCode) { this.retCode = retCode; } public int getTopicSubscribeUpdateNum() { return topicSubscribeUpdateNum; } public void setTopicSubscribeUpdateNum(int topicSubscribeUpdateNum) { this.topicSubscribeUpdateNum = topicSubscribeUpdateNum; } public String getTopicSubscribeUpdateList() { return topicSubscribeUpdateList; } public void setTopicSubscribeUpdateList(String topicSubscribeUpdateList) { this.topicSubscribeUpdateList = topicSubscribeUpdateList; } public String getRequestId() { return requestId; } public void setRequestId(String requestId) { this.requestId = requestId; } public String getRetMsg() { return retMsg; } public void setRetMsg(String retMsg) { this.retMsg = retMsg; } public int getArticleSubscribeUpdateNum() { return articleSubscribeUpdateNum; } public void setArticleSubscribeUpdateNum(int articleSubscribeUpdateNum) { this.articleSubscribeUpdateNum = articleSubscribeUpdateNum; } public List<TopicRecommendListBean> getTopicRecommendList() { return topicRecommendList; } public void setTopicRecommendList(List<TopicRecommendListBean> topicRecommendList) { this.topicRecommendList = topicRecommendList; } public List<AuthorListBean> getAuthorList() { return authorList; } public void setAuthorList(List<AuthorListBean> authorList) { this.authorList = authorList; } public List<SourceListBean> getSourceList() { return sourceList; } public void setSourceList(List<SourceListBean> sourceList) { this.sourceList = sourceList; } public List<ArticleListBean> getArticleList() { return articleList; } public void setArticleList(List<ArticleListBean> articleList) { this.articleList = articleList; } public static class TopicRecommendListBean { /** * headImgUrl : http://img.moviebase.cn/img/trecommend/2017/10/6629de7abce84b56b916366bc07576c0.jpg@480w * imgUrl : http://img.moviebase.cn/img/topic/2017/09/b9add2d4aa2d448aa260664e4401a6ba.jpg@!2x.webp * id : 44e9ea47bbd8401590d9a8ae3a3b283b * title : 北美新片 * desc : 来自米国院线的最新票房和口碑 * isSub : 0 * recommendImgUrl : http://img.moviebase.cn/img/trecommend/2017/10/6629de7abce84b56b916366bc07576c0.jpg@484w * isSubscribe : 0 * subscribeNum : 2616 * articlesNum : 58 */ private String headImgUrl; private String imgUrl; private String id; private String title; private String desc; private String isSub; private String recommendImgUrl; private int isSubscribe; private int subscribeNum; private int articlesNum; public String getHeadImgUrl() { return headImgUrl; } public void setHeadImgUrl(String headImgUrl) { this.headImgUrl = headImgUrl; } public String getImgUrl() { return imgUrl; } public void setImgUrl(String imgUrl) { this.imgUrl = imgUrl; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getIsSub() { return isSub; } public void setIsSub(String isSub) { this.isSub = isSub; } public String getRecommendImgUrl() { return recommendImgUrl; } public void setRecommendImgUrl(String recommendImgUrl) { this.recommendImgUrl = recommendImgUrl; } public int getIsSubscribe() { return isSubscribe; } public void setIsSubscribe(int isSubscribe) { this.isSubscribe = isSubscribe; } public int getSubscribeNum() { return subscribeNum; } public void setSubscribeNum(int subscribeNum) { this.subscribeNum = subscribeNum; } public int getArticlesNum() { return articlesNum; } public void setArticlesNum(int articlesNum) { this.articlesNum = articlesNum; } } public static class AuthorListBean { /** * id : 0185e0a334e54866bcc423322c02e217 * logo : http://img.moviebase.cn/img/other/2017/09/79174c2dabc94f89983488c09de74e78.jpg@130w * nickname : 手动贩卖机 * description : 人不如机器。 */ private String id; private String logo; private String nickname; private String description; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getLogo() { return logo; } public void setLogo(String logo) { this.logo = logo; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } } public static class SourceListBean { /** * id : 19f2cd89ca904eb69e51f7d6e8a1e679 * logo : http://img.moviebase.cn/img/source/2018/02/c526cc8be95944399a68197c778ee1ab.png@130w * nickname : 巴塞电影 * description : 资深电影编辑团队每日为你更新最有品、有料、原创、独家的电影资讯和深度解读。公众号:MovieBase */ private String id; private String logo; private String nickname; private String description; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getLogo() { return logo; } public void setLogo(String logo) { this.logo = logo; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } } public static class ArticleListBean { /** * imgUrl : http://img.moviebase.cn/img/poster/2018/03/bc1df537a3a540228075e050bb20668c.jpg@353w * id : 0677ba5d32d34ed09c66b5bf8c699edb * articleContentUrl : http://www.moviebase.cn/uread/app/viewArt/viewArt-0677ba5d32d34ed09c66b5bf8c699edb.html?appVersion=1.7.0 * pubDate : 1520931197 * praiseCount : 54 * title : 人间是否已耳聋?20年后,再听1998华语流行神曲 * description : * sourceName : 巴塞电影 * image : http://img.moviebase.cn/img/poster/2018/03/bc1df537a3a540228075e050bb20668c.jpg@353w * careateDate : 1520913387 * articleUrl : http://www.moviebase.cn/uread/app/viewArt/viewArt-0677ba5d32d34ed09c66b5bf8c699edb.html?appVersion=1.7.0 * sourceId : 19f2cd89ca904eb69e51f7d6e8a1e679 */ private String imgUrl; private String id; private String articleContentUrl; private int pubDate; private String praiseCount; private String title; private String description; private String sourceName; private String image; private int careateDate; private String articleUrl; private String sourceId; public String getImgUrl() { return imgUrl; } public void setImgUrl(String imgUrl) { this.imgUrl = imgUrl; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getArticleContentUrl() { return articleContentUrl; } public void setArticleContentUrl(String articleContentUrl) { this.articleContentUrl = articleContentUrl; } public int getPubDate() { return pubDate; } public void setPubDate(int pubDate) { this.pubDate = pubDate; } public String getPraiseCount() { return praiseCount; } public void setPraiseCount(String praiseCount) { this.praiseCount = praiseCount; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getSourceName() { return sourceName; } public void setSourceName(String sourceName) { this.sourceName = sourceName; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } public int getCareateDate() { return careateDate; } public void setCareateDate(int careateDate) { this.careateDate = careateDate; } public String getArticleUrl() { return articleUrl; } public void setArticleUrl(String articleUrl) { this.articleUrl = articleUrl; } public String getSourceId() { return sourceId; } public void setSourceId(String sourceId) { this.sourceId = sourceId; } } }
package com.example.six.net; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.six.R; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; /** * A simple {@link Fragment} subclass. */ public class NetFragment extends Fragment { RecyclerView rv; List<NetBean.ArticleListBean> mDatas = new ArrayList<>(); private NetAdapter adapter; String url = "http://www.moviebase.cn/uread/app/category/categoryList?platform=2&deviceId=A8C73E0D1ED1A2BED491C9238C8FD8A0&channelId=1003&appVersion=1.7.0"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_net, container, false); rv = (RecyclerView) view.findViewById(R.id.net_rv); // 布局管理者 LinearLayoutManager manager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); rv.setLayoutManager(manager); // 数据源 // 适配器 adapter = new NetAdapter(getActivity(),mDatas); rv.setAdapter(adapter); // 加载网络数据 loadWebData(); return view; } private void loadWebData() { new AsyncTask<Void,Void,String>(){ @Override protected String doInBackground(Void... voids) { String content = HttpUtils.getStringContent(url); return content; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if (s!=null&&!s.isEmpty()) { Gson gson = new Gson(); NetBean netBean = gson.fromJson(s, NetBean.class); List<NetBean.ArticleListBean> list = netBean.getArticleList(); mDatas.addAll(list); adapter.notifyDataSetChanged(); } } }.execute(); } }
<?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" android:orientation="vertical" tools:context="com.example.six.MainActivity"> <android.support.design.widget.TabLayout android:id="@+id/main_tab" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabBackground="@color/colorPrimary" app:tabGravity="fill" app:tabIndicatorColor="@color/colorAccent" app:tabIndicatorHeight="2dp" app:tabMode="fixed" app:tabSelectedTextColor="@color/colorAccent" app:tabTextColor="#FFF" /> <android.support.v4.view.ViewPager android:id="@+id/main_vp" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> </LinearLayout>
<RelativeLayout 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"> <!-- TODO: Update blank fragment layout --> <ImageView android:id="@+id/anime_iv" android:layout_width="200dp" android:layout_height="200dp" android:layout_centerInParent="true" android:src="@mipmap/ic_launcher" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn_alpha" android:text="透明度" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_scale" android:text="放缩" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_tran" android:text="平移" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_rotate" android:text="旋转" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout>
<FrameLayout 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="com.example.six.net.NetFragment"> <!-- TODO: Update blank fragment layout --> <android.support.v7.widget.RecyclerView android:id="@+id/net_rv" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout>
<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" android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.example.six.custom.ViewFragment"> <!-- TODO: Update blank fragment layout --> <com.example.six.custom.TitleView android:id="@+id/title1" android:layout_width="match_parent" android:layout_height="60dp" app:bgColor="#009900" app:titleText="标题1"></com.example.six.custom.TitleView> <com.example.six.custom.TitleView android:layout_width="match_parent" android:layout_height="60dp" app:titleText="标题2" android:layout_marginTop="10dp" app:bgColor="#009900" app:rightIvVisiable="false"></com.example.six.custom.TitleView> <com.example.six.custom.TitleView android:layout_width="match_parent" android:layout_height="60dp" app:titleText="标题3" app:bgColor="#990000" android:layout_marginTop="10dp" app:leftIvVisiable="false" app:rightIvVisiable="false" app:leftTvVisiable="true" app:rightTvVisiable="true"> </com.example.six.custom.TitleView> <com.example.six.custom.TitleView android:layout_width="match_parent" android:layout_height="60dp" app:bgColor="#990000" android:layout_marginTop="10dp" app:titleText="标题4" app:leftIvVisiable="false" app:leftTvVisiable="true" app:rightIvRes="@mipmap/mail_folder_type_add_account"></com.example.six.custom.TitleView> <com.example.six.custom.TitleView android:layout_width="match_parent" android:layout_height="60dp" app:bgColor="#000099" android:layout_marginTop="10dp" app:titleText="标题5" app:leftIvVisiable="false" app:leftTvVisiable="true" app:leftTextColor="#FF0000" app:rightIvRes="@mipmap/mail_folder_type_add_account"> </com.example.six.custom.TitleView> <com.example.six.custom.TitleView android:layout_width="match_parent" android:layout_height="60dp" app:bgColor="#000099" android:layout_marginTop="10dp" app:titleText="标题6" app:titleTextColor="#000" app:leftIvVisiable="false" app:leftTvVisiable="true" app:leftTextColor="#FF0000" app:rightIvRes="@mipmap/mail_folder_type_draft"></com.example.six.custom.TitleView> </LinearLayout>
<?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="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/item_net_iv" android:layout_width="match_parent" android:layout_height="200dp" android:src="@mipmap/ic_launcher" android:scaleType="centerCrop" android:layout_margin="5dp"/> <TextView android:id="@+id/item_net_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:textColor="#5e050e" android:text="裴浩宇"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" android:id="@+id/title_layout" android:background="@color/colorPrimary"> <TextView android:id="@+id/center_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题一" android:textSize="22sp" android:textColor="#FFFFFF" android:layout_centerInParent="true"/> <ImageView android:id="@+id/left_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/icon_title_bar_filter_focus" android:layout_centerVertical="true" android:layout_marginLeft="20dp" android:visibility="invisible"/> <TextView android:id="@+id/left_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="左边" android:textColor="#FFF" android:layout_centerVertical="true" android:layout_marginLeft="20dp" android:textSize="18sp"/> <ImageView android:id="@+id/right_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/icon_title_bar_filter_focus" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:visibility="invisible"/> <TextView android:id="@+id/right_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="右边" android:textSize="18sp" android:textColor="#FFFFFF" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="20dp"/> </RelativeLayout>//valUESTC
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="TitleView"> <attr name="bgColor" format="color"/> <attr name="titleText" format="string"/> <attr name="titleTextColor" format="color"/> <attr name="leftIvVisiable" format="boolean"/> <attr name="rightIvVisiable" format="boolean"/> <attr name="leftTvVisiable" format="boolean"/> <attr name="rightTvVisiable" format="boolean"/> <attr name="leftTextColor" format="color"/> <attr name="rightTextColor" format="color"/> <attr name="leftIvRes" format="reference"/> <attr name="rightIvRes" format="reference"/> </declare-styleable> </resources>