Android开发之ViewPager
来源:互联网 发布:java观察者模式 代码 编辑:程序博客网 时间:2024/05/16 07:30
ViewPager
步骤:
第一步:导入android-support-v4.jar
第二步:布局文件
代码:
activity_main.xml
<RelativeLayout 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:id="@+id/page" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> <!-- 在图片的下面 添加文字--> <LinearLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:alpha="0.9" android:background="#6c4c49" android:orientation="horizontal" > <TextView android:id="@+id/name" android:layout_width="200dp" android:layout_height="wrap_content" android:text="文字1" android:textColor="#130c0e" android:textSize="10sp" /> </LinearLayout></RelativeLayout>
第三步:
Activity类的编写
代码:
package com.qf.viewpage;import java.util.ArrayList;import java.util.List;import java.util.Map;import android.app.Activity;import android.graphics.drawable.Drawable;import android.os.AsyncTask;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends Activity {private ViewPager pager = null;private List<View> views = null;private ImageView[] imageViews = null;private TextView tv;private LinearLayout layout;//图片的底部设置文字和图片private Drawable[] drawables;String path = "http://sns.maimaicha.com/api?"+ "apikey=b4f4ee31a8b9acc866ef2afb754c33e6" +"&format=json&method=news.getSlideshow";//解析地址protected void onCreate(Bundle savedInstanceState) {//做初始化操作super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);pager = (ViewPager) findViewById(R.id.page);layout = (LinearLayout) findViewById(R.id.layout);views = new ArrayList<View>();tv = (TextView) findViewById(R.id.name);new MyAsyncTask().execute(path);}class MyAsyncTask extendsAsyncTask<String, Void, List<Map<String, String>>> {//异步加载(耗时操作)@Overrideprotected List<Map<String, String>> doInBackground(String... params) {// TODO Auto-generated method stubString str = new String(HttpUtils.getHttp(params[0]), 0,HttpUtils.getHttp(params[0]).length);<span style="color:#ff6666;">//从网络端获取字符串(代码在下方显示)</span>// System.out.println("str===========>"+str);List<Map<String, String>> list = JSONUtils.getJson(str);//<span style="color:#ff6666;">解析获得的字符串<span style="font-family: Arial, Helvetica, sans-serif;">(代码在下方显示)</span></span>System.out.println("=======>" + list.get(0).get("name"));drawables = new Drawable[list.size()];for (int j = 0; j < list.size(); j++) {drawables[j] = Drawable.createFromStream(HttpUtils.getInputStream(list.get(j).get("image")),null);}return list;}@Overrideprotected void onPostExecute(final List<Map<String, String>> result) {// TODO Auto-generated method stubsuper.onPostExecute(result);imageViews = new ImageView[result.size()];for (int i = 0; i < result.size(); i++) {imageViews[i] = new ImageView(MainActivity.this);imageViews[i].setLayoutParams(new LayoutParams(27, 27));if (i == 0) {imageViews[i].setBackgroundResource(R.drawable.dot);} else {imageViews[i].setBackgroundResource(R.drawable.dot_1);}layout.addView(imageViews[i]);}int[] ims = { R.drawable.photo_x_12, R.drawable.photo_x_13,R.drawable.photo_x_14 };for (int i = 0; i < result.size(); i++) {View view = LayoutInflater.from(getApplication()).inflate(R.layout.item, null);view.setBackground(drawables[i]);views.add(view);}pager.setAdapter(new MyPageAdapter());pager.setOnPageChangeListener(new OnPageChangeListener() {// 点图片的处理@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stubfor (int i = 0; i < views.size(); i++) {if (arg0 == i) {imageViews[i].setBackgroundResource(R.drawable.dot);tv.setText(result.get(i).get("name"));} else {imageViews[i].setBackgroundResource(R.drawable.dot_1);}}}public void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}});}}class MyPageAdapter extends PagerAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn views.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}public void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stub// super.destroyItem(container, position, object);container.removeView(views.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubcontainer.addView(views.get(position));return views.get(position);}}}
从网络端获取数据
代码:
package com.qf.viewpage;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;public class JSONUtils {public static List<Map<String,String>> getJson(String path){List<Map<String,String>> maps=new ArrayList<Map<String,String>>();try {JSONArray jsonArray = new JSONObject(path).getJSONArray("data");for (int i = 0; i < jsonArray.length(); i++) {JSONObject object = (JSONObject) jsonArray.get(i);Map<String,String> map=new HashMap<String, String>();map.put("id", object.getString("id"));map.put("title", object.getString("title"));map.put("name", object.getString("name"));map.put("link", object.getString("link"));map.put("content", object.getString("content"));map.put("image", object.getString("image"));maps.add(map);}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}return maps;}}
解析上面获得的数据
代码:
package com.qf.viewpage;import java.io.IOException;import java.io.InputStream;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;public class HttpUtils { public static byte[] getHttp(String path){ HttpClient httpClient =new DefaultHttpClient(); HttpGet get =new HttpGet(path); try {HttpResponse httpResponse = httpClient.execute(get);if (httpResponse.getStatusLine().getStatusCode()==200) {return EntityUtils.toByteArray(httpResponse.getEntity());}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{httpClient.getConnectionManager().shutdown();}return "传错了".getBytes(); } public static InputStream getInputStream(String path){ HttpClient httpClient =new DefaultHttpClient(); HttpGet get =new HttpGet(path); try {HttpResponse httpResponse = httpClient.execute(get);if (httpResponse.getStatusLine().getStatusCode()==200) {return httpResponse.getEntity().getContent();}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null; }}
以上就是所有类
0 0
- Android开发之ViewPager
- Android开发之ViewPager
- android开发之ViewPager
- .android 开发之ViewPager内嵌套ViewPager
- Android应用开发之ViewPager
- Android开发之Viewpager动画
- Android开发之自定义控件--ViewPager
- Android开发之自定义控件--ViewPager
- android开发笔记之viewpager 基本使用方法
- Android开发之ViewPager显示页面切换
- android开发之两个ViewPager联动
- android开发之定制ViewPager滑动事件
- Android开发之ViewPager使用详解(一)
- Android开发之ViewPager切换动画
- android开发之ViewPager的使用
- Android 开发之 TabLayout + ViewPager 的使用
- android开发 - ViewPager使用
- Android开发学习之基于ViewPager实现Gallery画廊效果
- 隐藏某一控件结果多个控件隐藏的原因
- POJ 2112 Optimal Milking(二分+最大流)
- (三)(1) Z-Stack协议中几个重要概念的理解
- 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件
- 笔试面试5 实现C库函数strlen
- Android开发之ViewPager
- daemon
- java出现no XXX in java.library.path的解决办法及eclipse配置
- SpringMVC拦截器简单使用
- 【新闻发布系统】——验证码的那些事 Ⅰ
- 数论总结(不断更新中)
- Maven简介(三)——profile介绍
- Windows不能用鼠标双击运行jar文件怎么办?
- spring AOP和通知