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
原创粉丝点击