android ViewPager学习笔记3
16lz
2021-01-26
主界面:
public class MainActivity extends FragmentActivity {private ViewPager viewPager;private List<Fragment> items;private MyFragmentPagerAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager = (ViewPager) this.findViewById(R.id.pager);items = new ArrayList<Fragment>();items.add(new Fragment1());items.add(new Fragment2());items.add(new Fragment3());items.add(new Fragment4());adapter = new MyFragmentPagerAdapter(getSupportFragmentManager());viewPager.setAdapter(adapter);adapter.notifyDataSetChanged();}/** * 使用FragmentPagerAdapter适配器的时候,他会持久化数据,即使Fragment被系统销毁,数据也是会保存在内存中的 * 所以不能使用它来加载大量的数据 * * 使用FragmentStatePagerAdapter适配器的时候,他会销毁Fragment仅仅保存Fragment的引用,适合加载一些大量的数据, * @author jack * */public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {public MyFragmentPagerAdapter(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stub}@Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubreturn items.get(arg0);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn items.size();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
对应布局:
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" > </android.support.v4.view.ViewPager></RelativeLayout>
各界面定义:
public class Fragment1 extends Fragment {private final String image_path = "http://lh5.ggpht.com/_mrb7w4gF8Ds/TCpetKSqM1I/AAAAAAAAD2c/Qef6Gsqf12Y/s144-c/_DSC4374%20copy.jpg";@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view = inflater.inflate(R.layout.f1, null);final ImageView imageView = (ImageView) view.findViewById(R.id.imageView1); new ImageDownLoad().loadImage(image_path, new ImageCallBack() {@Overridepublic void getImageContent(Bitmap bitmap) {// TODO Auto-generated method stubimageView.setImageBitmap(bitmap);}});return view;}@Overridepublic void onPause() {// TODO Auto-generated method stubsuper.onPause();}<pre name="code" class="html">}
对应布局:
<pre name="code" class="html"><?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:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /></LinearLayout>
其余类似。
工具类:
public class ImageDownLoad {public void loadImage(final String path, final ImageCallBack callBack) {final Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);Bitmap bitmap = (Bitmap) msg.obj;callBack.getImageContent(bitmap);}};new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubHttpClient httpClient = new DefaultHttpClient();HttpPost httpPost = new HttpPost(path);HttpResponse response = null;try {response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode() == 200) {byte[] data = EntityUtils.toByteArray(response.getEntity());Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);Message message = Message.obtain();message.obj = bitmap;handler.sendMessage(message);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} finally {httpClient.getConnectionManager().shutdown();}}}).start();}public interface ImageCallBack {public void getImageContent(Bitmap bitmap);}}
更多相关文章
- 一句话锁定MySQL数据占用元凶
- SQLiteDatabaseTest
- TabBar_ViewPager做成的tab页面
- Android同步网络请求工具类HttpURLConnection
- sqlite的使用及其框架
- Android中SdCard的数据读写
- 用android原生代码实现联网得到图片
- Android第十五天 ContentProvider之ContentResover
- Android--fragment从activity中获取数据