Android_网络获取+动画
来源:互联网 发布:mysql front新建数据库 编辑:程序博客网 时间:2024/06/08 16:49
/** * 1, (25分) 实现ViewPager + Fragment ,切换页面, 3个Fragment; 2, (25分) 第一个Fragment中, 通过xUtils 获取网络数据, 展示到RecyclerView 地址: http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1 解析字段: title , pic 3, (25分) 第二个Fragment 中, 属性动画, 实现机器人的: 缩放X , 移动Y , 渐变, 旋转, 集合的效果 4, (25分) 第三个Fragment 中, 通过自定义组合控件, 实现TitleView 的效果,如下图所示 点击按钮, 弹出吐司 */public class Test05Activity extends AppCompatActivity { private ViewPager vp; private List<Fragment> data; private MyAdapter adapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test05); vp= (ViewPager) findViewById(R.id.vp_id); //构建ViewPager的数据源 data=new ArrayList<>(); data.add(new TestFragment_01()); data.add(new TestFragment_02()); data.add(new TestFragment_03()); //设置适配器 adapter=new MyAdapter(getSupportFragmentManager()); vp.setAdapter(adapter); } //自定义适配器 class MyAdapter extends FragmentPagerAdapter{ public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return data.get(position); } @Override public int getCount() { return data.size(); } }}
public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ViewHolder> { private List<CookBook.DataBean> data; private Context context; public RvAdapter(Context context, List<CookBook.DataBean> data) { this.data = data; this.context=context; } public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){ //加载每个条目显示的页面 View view= LayoutInflater.from(context).inflate(R.layout.item_rv,parent); ViewHolder viewHolder=new ViewHolder(view); return viewHolder; } public void onBindViewHolder(ViewHolder holder,int position){ //赋值的操作 holder.tv.setText(data.get(position).getTitle()); //加载网络的图片 x.image().bind(holder.iv,data.get(position).getPic()); } public int getItemCount(){ return data.size(); } class ViewHolder extends RecyclerView.ViewHolder{ private ImageView iv; private TextView tv; public ViewHolder(View itemView) { super(itemView); this.iv= (ImageView) itemView.findViewById(R.id.iv_id); this.tv= (TextView) itemView.findViewById(R.id.tv_id); } }}
public class CustomView extends LinearLayout { private ImageView iv; private TextView tv; private Button btn; public CustomView(Context context) { super(context); } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); //引入页面,和当前的View绑定在一起 LayoutInflater.from(getContext()).inflate(R.layout.custom_view,this); //从引入的页面中,得到控件 iv= (ImageView) findViewById(R.id.iv_id); tv= (TextView) findViewById(R.id.tv_id); btn= (Button) findViewById(R.id.btn_id); //为控件设置监听器 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), "你点击了按钮", Toast.LENGTH_SHORT).show(); } }); }}
public class CookBook { /** * ret : 1 * data : [{"id":"8289","title":"油焖大虾","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg","collect_num":"1646","food_str":"大虾 葱 生姜 植物油 料酒","num":1646},{"id":"2127","title":"四川回锅肉","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2127.jpg","collect_num":"1581","food_str":"猪肉 青蒜 青椒 红椒 姜片","num":1581},{"id":"30630","title":"超简单芒果布丁","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/31/30630.jpg","collect_num":"1514","food_str":"QQ糖 牛奶 芒果","num":1514},{"id":"9073","title":"家常红烧鱼","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/10/9073.jpg","collect_num":"1416","food_str":"鲜鱼 姜 葱 蒜 花椒","num":1416},{"id":"10097","title":"家常煎豆腐","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10097.jpg","collect_num":"1400","food_str":"豆腐 新鲜红椒 青椒 葱花 油","num":1400},{"id":"10509","title":"水煮肉片","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10509.jpg","collect_num":"1334","food_str":"瘦猪肉 生菜 豆瓣酱 干辣椒 花椒","num":1334},{"id":"46968","title":"红糖苹果银耳汤","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/47/46968.jpg","collect_num":"1240","food_str":"银耳 苹果 红糖","num":1240},{"id":"10191","title":"麻婆豆腐","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10191.jpg","collect_num":"1208","food_str":"豆腐 肉末 生抽 白糖 芝麻油","num":1208},{"id":"2372","title":"皮蛋瘦肉粥","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2372.jpg","collect_num":"1138","food_str":"大米 皮蛋 猪肉 油条 香葱","num":1138},{"id":"2166","title":"蚂蚁上树","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2166.jpg","collect_num":"1134","food_str":"红薯粉 肉 姜 蒜 花椒","num":1134},{"id":"2262","title":"糖醋肉","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2262.jpg","collect_num":"1070","food_str":"猪肉 红椒 黄椒 洋葱 蛋清","num":1070},{"id":"9971","title":"鱼香豆腐","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/10/9971.jpg","collect_num":"1001","food_str":"豆腐 木耳 胡萝卜 香葱 番茄酱","num":1001},{"id":"10172","title":"干煸四季豆","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10172.jpg","collect_num":"986","food_str":"四季豆 干辣椒 蒜头 酱油 糖","num":986},{"id":"2685","title":"胡萝卜肉末蒸蛋","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2685.jpg","collect_num":"906","food_str":"胡萝卜 肉 蛋 生抽 盐","num":906},{"id":"9972","title":"虎皮青椒","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/10/9972.jpg","collect_num":"885","food_str":"青辣椒 大蒜 香醋 白糖 生抽","num":885},{"id":"10437","title":"叉烧排骨","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10437.jpg","collect_num":"792","food_str":"排骨 李锦记叉烧酱 植物油 清水 油菜","num":792},{"id":"2892","title":"\u201c五行\u201d彩蔬汤","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2892.jpg","collect_num":"755","food_str":"黑木耳 玉米 牛蒡 胡萝卜 西兰花","num":755},{"id":"2348","title":"麻辣肉丝面","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/3/2348.jpg","collect_num":"751","food_str":"面条 肉丝 淀粉 酱油 辣椒","num":751},{"id":"33783","title":"美人豆浆","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/34/33783.jpg","collect_num":"750","food_str":"黄豆 红豆 绿豆 黑豆 黑米","num":750},{"id":"10044","title":"土豆炖翅根","pic":"http://www.qubaobei.com/ios/cf/uploadfile/132/11/10044.jpg","collect_num":"749","food_str":"土豆 翅根 葱 姜 料酒","num":749}] */ private int ret; private List<DataBean> data; public int getRet() { return ret; } public void setRet(int ret) { this.ret = ret; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { /** * id : 8289 * title : 油焖大虾 * pic : http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg * collect_num : 1646 * food_str : 大虾 葱 生姜 植物油 料酒 * num : 1646 */ private String id; private String title; private String pic; private String collect_num; private String food_str; private int num; 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 getPic() { return pic; } public void setPic(String pic) { this.pic = pic; } public String getCollect_num() { return collect_num; } public void setCollect_num(String collect_num) { this.collect_num = collect_num; } public String getFood_str() { return food_str; } public void setFood_str(String food_str) { this.food_str = food_str; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } }// private int ret;// private List<>}
public class TestFragment_01 extends Fragment { private String url="http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1"; private RecyclerView recyclerView; public TestFragment_01() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view= inflater.inflate(R.layout.fragment_test_fragment_01, container, false); //初始化控件 recyclerView= (RecyclerView) view.findViewById(R.id.recycleview); //设置RecyclerView显示的模式 LinearLayoutManager manager=new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false); recyclerView.setLayoutManager(manager); //通过XUtils获取网络数据,展示到RecycleView中 /** * 1, 导入依赖 * 2, 在清单文件中设置权限: 网络权限, 读写sd卡的权限 * 3, 自定义Applcation 的子类, 初始化xUtils, 并且在清单文件的<applicaion adnroid:name=""/> */ //设置请求的参数 RequestParams params=new RequestParams(url); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String s) { //解析数据,得到数据源 CookBook cookBook=new Gson().fromJson(s,CookBook.class); List<CookBook.DataBean> dataBeen=cookBook.getData(); //定义适配器,显示数据 RvAdapter adapter=new RvAdapter(getContext(),dataBeen); recyclerView.setAdapter(adapter); } @Override public void onError(Throwable throwable, boolean b) { } @Override public void onCancelled(CancelledException e) { } @Override public void onFinished() { } }); return view; }}
public class TestFragment_02 extends Fragment implements View.OnClickListener { private Button btn_01; private Button btn_02; private Button btn_03; private Button btn_04; private Button btn_05; private ImageView imageView; public TestFragment_02() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_test_fragment_02, container, false); initView(view); return view; } private void initView(View view) { btn_01= (Button) view.findViewById(R.id.btn_01); btn_02= (Button) view.findViewById(R.id.btn_02); btn_03= (Button) view.findViewById(R.id.btn_03); btn_04= (Button) view.findViewById(R.id.btn_04); btn_05= (Button) view.findViewById(R.id.btn_05); imageView= (ImageView) view.findViewById(R.id.iv_id); btn_01.setOnClickListener(this); btn_02.setOnClickListener(this); btn_03.setOnClickListener(this); btn_04.setOnClickListener(this); btn_05.setOnClickListener(this); } //点击按钮,切换动画 @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_01: //1, 定义动画 -- 指明显为那个控件设置动画 ObjectAnimator animator=ObjectAnimator.ofFloat(imageView,"alpha",1.0f,0.0f); //2,设置持续时间 animator.setDuration(3000); //3,启动动画 animator.start(); break; case R.id.btn_02: //缩放 ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView,"scaleX",0,4); animator1.setDuration(5000); animator1.start(); break; case R.id.btn_03: //旋转 ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView,"rotation",0,4); animator2.setDuration(5000); animator2.start(); break; case R.id.btn_04: ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView,"translationY",0,500); animator3.setDuration(10000); animator3.start(); break; case R.id.btn_05: //1,得到属性动画集合 AnimatorSet animatorSet=new AnimatorSet(); //2,创建要加入的动画 ObjectAnimator animator4=ObjectAnimator.ofFloat(imageView,"translationY",0,500,800,600,700); ObjectAnimator animator5=ObjectAnimator.ofFloat(imageView,"rotation",0,720); //3,把动画加入集合中 //第一种方式:// List<Animator> list=new ArrayList<>();// list.add(animator4);// list.add(animator5);// //一起执行// animatorSet.playTogether(list);// //依次执行// animatorSet.playSequentially(list); //第二种方式: //播放: animatorSet.play(animator4).with(animator5); animatorSet.setDuration(5000); //设置插值器-- 先慢后快 animatorSet.setInterpolator(new AccelerateDecelerateInterpolator()); //4,启动动画 animatorSet.start(); break; } }}
public class TestFragment_03 extends Fragment { private CustomView cv; public TestFragment_03() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_test_fragment_03, container, false); return view; }}
item_rv:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <ImageView android:src="@mipmap/ic_launcher" android:id="@+id/iv_id" android:layout_width="150dp" android:layout_height="150dp" /> <TextView android:textSize="25sp" android:layout_margin="10dp" android:text="名称" android:id="@+id/tv_id" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
fragment_03:
<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.lenovo.test_all.demo05.TestFragment_03"> <!-- TODO: Update blank fragment layout --> <com.example.lenovo.test_all.demo05.CustomView android:layout_width="match_parent" android:id="@+id/cv_id" android:layout_height="100dp"></com.example.lenovo.test_all.demo05.CustomView></FrameLayout>
fragment_02
<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.lenovo.test_all.demo05.TestFragment_02"> <!-- TODO: Update blank fragment layout --> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="0dp" android:layout_weight="1" android:text="透明度" android:id="@+id/btn_01" android:onClick="onClick" android:layout_height="wrap_content" /> <Button android:layout_width="0dp" android:layout_weight="1" android:text="缩放" android:id="@+id/btn_02" android:onClick="onClick" android:layout_height="wrap_content" /> <Button android:layout_width="0dp" android:layout_weight="1" android:text="旋转" android:id="@+id/btn_03" android:onClick="onClick" android:layout_height="wrap_content" /> <Button android:layout_width="0dp" android:layout_weight="1" android:text="位移" android:id="@+id/btn_04" android:onClick="onClick" android:layout_height="wrap_content" /> <Button android:layout_width="0dp" android:layout_weight="1" android:text="集合" android:id="@+id/btn_05" android:onClick="onClick" android:layout_height="wrap_content" /> </LinearLayout> <ImageView android:layout_gravity="center" android:id="@+id/iv_id" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /></FrameLayout>
fragment_01
<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.lenovo.test_all.demo05.TestFragment_01"> <!-- TODO: Update blank fragment layout --> <android.support.v7.widget.RecyclerView android:id="@+id/recycleview" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></FrameLayout>
custom_view
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <ImageView android:id="@+id/iv" android:layout_margin="10dp" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_margin="10dp" android:text="组合的自定义View" android:id="@+id/tv_id" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_margin="10dp" android:text="点我" android:id="@+id/btn_id" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
activity_test05
<?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="match_parent"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp_id" ></android.support.v4.view.ViewPager></LinearLayout>
网络权限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
阅读全文
0 0
- Android_网络获取+动画
- android_动画
- 网络获取+动画
- android_学习—获取网络数据(图片,html)
- Android_获取网络端的Xml和json
- android_切换动画
- Android_属性动画
- android_属性动画
- android_动画总结
- android_动画框架
- Android_正弦波动画
- Android_基础动画
- Android_动画切换
- Android_动画:Interpolator
- Android_动画机制
- Android_属性动画
- Android_补间动画
- Android_补间动画
- git的reset和版本概念
- 短信模块结构解析链接
- Python基础篇之List二.(顺序访问List)
- OpenCV入门学习之显示一张图片
- SQL Server 2008(R2)安装过程窗口关闭或者出现could not open key
- Android_网络获取+动画
- 阿里云学生服务器搭建网站(2)-Ubuntu16.04安装php开发环境
- C语言实验——分割整数
- 【TensorBoard】打开出错(空白blank, Netword error)
- <!DOCTYPE>声明
- ubuntu grep搜索文本
- 邻接矩阵存储
- Reflection—Field
- Mysql5.7解压版的安装和卸载及常见问题