短网址还原网站平台建设包括什么
web/
2025/10/5 1:47:00/
文章来源:
短网址还原网站,平台建设包括什么,广告联盟哪个好,今天佛山突发新闻## ViewPagerIndicator ## 使用导入ViewPagerIndicator库的方式相当于可以改源码#xff0c;打包编译Eclips可以自动完成。ViewPager指针项目#xff0c;在使用ViewPager的时候能够指示ViewPager所在的位置#xff0c;就像Google Play中切换的效果一样#xff0c;还能使用… ## ViewPagerIndicator ## 使用导入ViewPagerIndicator库的方式相当于可以改源码打包编译Eclips可以自动完成。ViewPager指针项目在使用ViewPager的时候能够指示ViewPager所在的位置就像Google Play中切换的效果一样还能使用在应用初始化的介绍页面1. 引入ViewPagerIndicator库
2. 编写布局文件com.viewpagerindicator.TabPageIndicatorandroid:idid/indicatorandroid:layout_widthfill_parentandroid:layout_heightwrap_content /3. mIndicator.setViewPager(mViewPager);//将viewpager和mIndicator关联起来,必须在viewpager设置完adapter后才能调用4. 重写PagerAdapter方法,返回页面标题/*** 重写此方法,返回页面标题,用于viewpagerIndicator的页签显示*/Overridepublic CharSequence getPageTitle(int position) {return mNewsTabData.get(position).title;}5. 自定义样式修改
清单文件activityandroid:name.MainActivityandroid:themestyle/Theme.PageIndicatorDefaults /
然后修改Theme.PageIndicatorDefaults这个样式文件。 package com.itheima.zhbj52.base.menudetail;import java.util.ArrayList;import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;import com.itheima.zhbj52.MainActivity;
import com.itheima.zhbj52.R;
import com.itheima.zhbj52.base.BaseMenuDetailPager;
import com.itheima.zhbj52.base.TabDetailPager;
import com.itheima.zhbj52.domain.NewsData.NewsTabData;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.viewpagerindicator.TabPageIndicator;/*** 新闻中心-新闻*/
public class NewsMenuDetailPager extends BaseMenuDetailPager implements OnPageChangeListener {/*public abstract class BaseMenuDetailPager {public Activity mActivity;public View mRootView;public BaseMenuDetailPager(Activity activity) {mActivity activity;mRootView initViews();}public abstract View initViews();public void initData() {}}*/private ViewPager mViewPager;//11个标签页的适配器private ArrayListTabDetailPager mPagerList;//11个标签页private ArrayListNewsTabData mNewsTabData;// 页签网络数据private TabPageIndicator mIndicator;//viewpagerindicator实现的标签头public NewsMenuDetailPager(Activity activity,ArrayListNewsTabData children) {super(activity);mNewsTabData children;}Overridepublic View initViews() {View view View.inflate(mActivity, R.layout.news_menu_detail, null);//返回给上层flContent的页面View对象。/*?xml version1.0 encodingutf-8?LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontal com.viewpagerindicator.TabPageIndicator ViewPager页标签的固定写法android:idid/indicatorandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_weight1 /ImageButton 可以切换页标签的按钮android:idid/btn_nextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_verticalandroid:backgroundandroid:color/transparentandroid:padding5dpandroid:srcdrawable/news_cate_arr 图片/ /LinearLayoutandroid.support.v4.view.ViewPagerandroid:idid/vp_menu_detailandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent //LinearLayout*/mViewPager (ViewPager) view.findViewById(R.id.vp_menu_detail);ViewUtils.inject(this, view);mIndicator (TabPageIndicator) view.findViewById(R.id.indicator);// mViewPager.setOnPageChangeListener(this);//注意:当viewpager和Indicator绑定时,// 滑动监听需要设置给Indicator而不是viewpager,这样滑动viewpager的时候上面的标签就能够跟着下面的viewpager一起滑动。mIndicator.setOnPageChangeListener(this);return view;}Overridepublic void initData() {mPagerList new ArrayListTabDetailPager();// 初始化页签数据for (int i 0; i mNewsTabData.size(); i) {TabDetailPager pager new TabDetailPager(mActivity,mNewsTabData.get(i));mPagerList.add(pager);}mViewPager.setAdapter(new MenuDetailAdapter());mIndicator.setViewPager(mViewPager);// 将viewpager和mIndicator关联起来,这样每个ViewPager就有标签头了必须在viewpager设置完adapter后才能调用}// 按钮的监听事件OnClick(R.id.btn_next)public void nextPage(View view) {int currentItem mViewPager.getCurrentItem();mViewPager.setCurrentItem(currentItem);}class MenuDetailAdapter extends PagerAdapter {//重写此方法,返回页面标题,用于viewpagerIndicator的页签显示Overridepublic CharSequence getPageTitle(int position) {return mNewsTabData.get(position).title;}Overridepublic int getCount() {return mPagerList.size();}Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 arg1;}Overridepublic Object instantiateItem(ViewGroup container, int position) {TabDetailPager pager mPagerList.get(position);//新闻的11个子页面container.addView(pager.mRootView);pager.initData();return pager.mRootView;}Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}Overridepublic void onPageScrollStateChanged(int arg0) {}Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}Overridepublic void onPageSelected(int arg0) {System.out.println(onPageSelected: arg0);MainActivity mainUi (MainActivity) mActivity;SlidingMenu slidingMenu mainUi.getSlidingMenu();if (arg0 0) {//只有在第一个页面(北京), 侧边栏才允许出来slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);} else {slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);}}} 自定义ViewPager处理事件的拦截 package com.itheima.zhbj52.view;import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;/*** 头条新闻的Viewpager*/
public class TopNewsViewPager extends ViewPager {int startX;int startY;public TopNewsViewPager(Context context, AttributeSet attrs) {super(context, attrs);}public TopNewsViewPager(Context context) {super(context);}/*** ViewPager嵌套的时候父子的滑动事件处理* 事件分发, 请求父控件及祖宗控件是否拦截事件请求父控件及祖宗控件不要拦截则事件就可以传到这个控件来dispatchTouchEvent()方法里面重写。* 1. 右划, 而且是第一个页面, 需要父控件拦截 此时父控件可以滑动。* 2. 左划, 而且是最后一个页面, 需要父控件拦截 此时父控件可以滑动。* 3. 上下滑动, 需要父控件拦截*/Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {switch (ev.getAction()) {case MotionEvent.ACTION_DOWN:getParent().requestDisallowInterceptTouchEvent(true);// 请求父控件不要拦截所有的父控件都不拦截。startX (int) ev.getRawX();startY (int) ev.getRawY();//.getX()是获取基于父控件的位置getRawX()是获取基于屏幕的位置。break;case MotionEvent.ACTION_MOVE:int endX (int) ev.getRawX();int endY (int) ev.getRawY();if (Math.abs(endX - startX) Math.abs(endY - startY)) {// 左右滑动if (endX startX) {// 右划if (getCurrentItem() 0) {// 第一个页面, 需要父控件拦截getParent().requestDisallowInterceptTouchEvent(false);}} else {// 左划if (getCurrentItem() getAdapter().getCount() - 1) {// 最后一个页面,// 需要拦截getParent().requestDisallowInterceptTouchEvent(false);}}} else {// 上下滑动getParent().requestDisallowInterceptTouchEvent(false);}break;default:break;}return super.dispatchTouchEvent(ev);}
} package com.itheima.zhbj52.base;import java.util.ArrayList;import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.TextView;
import android.widget.Toast;import com.google.gson.Gson;
import com.itheima.zhbj52.R;
import com.itheima.zhbj52.domain.NewsData.NewsTabData;
import com.itheima.zhbj52.domain.TabData;
import com.itheima.zhbj52.domain.TabData.TabNewsData;
import com.itheima.zhbj52.domain.TabData.TopNewsData;
import com.itheima.zhbj52.global.GlobalContants;
import com.itheima.zhbj52.view.RefreshListView;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.viewpagerindicator.CirclePageIndicator;/*** 新闻中心-新闻-北京 页签详情页*/
public class TabDetailPager extends BaseMenuDetailPager implements OnPageChangeListener {NewsTabData mTabData;private TextView tvText;private String mUrl;private TabData mTabDetailData;ViewInject(R.id.vp_news)private ViewPager mViewPager;ViewInject(R.id.tv_title)private TextView tvTitle;// 头条新闻的标题private ArrayListTopNewsData mTopNewsList;// 头条新闻数据集合
ViewInject(R.id.indicator)private CirclePageIndicator mIndicator;// 头条新闻位置指示器安卓自带的(4个黑色的指示位置的圆点还支持点击)
ViewInject(R.id.lv_list)private RefreshListView lvList;// 新闻列表private ArrayListTabNewsData mNewsList; // 新闻数据集合private NewsAdapter mNewsAdapter;public TabDetailPager(Activity activity, NewsTabData newsTabData) {super(activity);mTabData newsTabData;mUrl GlobalContants.SERVER_URL mTabData.url;}Overridepublic View initViews() {View view View.inflate(mActivity, R.layout.tab_detail_pager, null);//tab_detail_pager.xml/*?xml version1.0 encodingutf-8?LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical com.itheima.zhbj52.view.RefreshListView 下拉刷新的文字和箭头部分这也是一个ListView。android:idid/lv_listandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:cacheColorHint#fffandroid:layout_weight1 /com.itheima.zhbj52.view.RefreshListView/LinearLayout*/// 加载头布局(图片滑动的viewPaer),整体作为一个头view加载进ListView(下面的滑动新闻列表),这样headerView就会在listView里面一起滑动。View headerView View.inflate(mActivity, R.layout.list_header_topnews,null);//list_header_topnews.xml/*?xml version1.0 encodingutf-8?RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoandroid:layout_widthmatch_parentandroid:layout_heightwrap_content com.itheima.zhbj52.view.TopNewsViewPagerandroid:idid/vp_newsandroid:layout_widthmatch_parentandroid:layout_height200dp /RelativeLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_alignParentBottomtrueandroid:background#a000android:padding3dp TextViewandroid:idid/tv_titleandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textColor#fffandroid:textSize16sp / com.viewpagerindicator.CirclePageIndicator 安卓自带的(4个黑色的指示位置的圆点还支持点击)android:idid/indicator android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_alignParentRighttrueandroid:padding10dipapp:fillColor#f00app:pageColorandroid:color/darker_grayapp:radius3dpapp:strokeWidth0dp //RelativeLayout/RelativeLayout*/ViewUtils.inject(this, view);//view里面的控件就可以支持注解了。ViewUtils.inject(this, headerView);//headerView里面的控件就可以支持注解了。// 将头条新闻以头布局的形式加给listviewlvList.addHeaderView(headerView);//后加载的HeaderView在下面。return view;}Overridepublic void initData() {getDataFromServer();}private void getDataFromServer() {HttpUtils utils new HttpUtils();utils.send(HttpMethod.GET, mUrl, new RequestCallBackString() {Overridepublic void onSuccess(ResponseInfoString responseInfo) {String result (String) responseInfo.result;System.out.println(页签详情页返回结果: result);parseData(result);}Overridepublic void onFailure(HttpException error, String msg) {Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT).show();error.printStackTrace();}});}protected void parseData(String result) {Gson gson new Gson();mTabDetailData gson.fromJson(result, TabData.class);System.out.println(页签详情解析: mTabDetailData);mTopNewsList mTabDetailData.data.topnews;mNewsList mTabDetailData.data.news;if (mTopNewsList ! null) {mViewPager.setAdapter(new TopNewsAdapter());mIndicator.setViewPager(mViewPager);mIndicator.setSnap(true);// 支持快照显示mIndicator.setOnPageChangeListener(this);mIndicator.onPageSelected(0);// 让指示器重新定位到第一个点
tvTitle.setText(mTopNewsList.get(0).title);}if (mNewsList ! null) {mNewsAdapter new NewsAdapter();lvList.setAdapter(mNewsAdapter);}}/*** 头条新闻适配器,ViewPager的适配器*/class TopNewsAdapter extends PagerAdapter {private BitmapUtils utils;public TopNewsAdapter() {utils new BitmapUtils(mActivity);utils.configDefaultLoadingImage(R.drawable.topnews_item_default);// 设置默认图片下载图片的时候要等待等待的时候显示这个图片。}Overridepublic int getCount() {return mTabDetailData.data.topnews.size();}Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 arg1;}Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView image new ImageView(mActivity);image.setScaleType(ScaleType.FIT_XY);// 基于控件大小填充图片
TopNewsData topNewsData mTopNewsList.get(position);utils.display(image, topNewsData.topimage);// 传递imagView对象和图片地址从url加载图片。图片多了就会内存溢出。
container.addView(image);System.out.println(instantiateItem..... position);return image;}Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}/*** 新闻列表的适配器ListView的适配器。*/class NewsAdapter extends BaseAdapter {private BitmapUtils utils;public NewsAdapter() {utils new BitmapUtils(mActivity);utils.configDefaultLoadingImage(R.drawable.pic_item_list_default);//设置默认的图片}Overridepublic int getCount() {return mNewsList.size();}Overridepublic TabNewsData getItem(int position) {return mNewsList.get(position);}Overridepublic long getItemId(int position) {return position;}Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView null) {convertView View.inflate(mActivity, R.layout.list_news_item,null);//list_news_item.xml/*?xml version1.0 encodingutf-8?RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightwrap_content android:padding10dpImageViewandroid:idid/iv_picandroid:layout_width110dp 图片大小写死android:layout_height70dpandroid:scaleTypefitXY 小了的话填满android:padding1dpandroid:backgroundandroid:color/darker_gray 背景是黑颜色并且设置padding1dp这样就实现了图片周围有黑框。android:layout_alignParentLefttrueandroid:layout_alignParentToptrueandroid:srcdrawable/image_demo /TextViewandroid:idid/tv_titleandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_alignParentToptrueandroid:layout_marginLeft20dpandroid:layout_toRightOfid/iv_picandroid:text新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题android:textColor#000android:maxLines2android:ellipsizeend 多余文字在末尾加......android:textSize20sp /TextViewandroid:idid/tv_dateandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_alignLeftid/tv_titleandroid:text2015-03-16 16:20android:layout_alignBottomid/iv_picandroid:textColorandroid:color/darker_grayandroid:textSize16sp //RelativeLayout*/holder new ViewHolder();holder.ivPic (ImageView) convertView.findViewById(R.id.iv_pic);holder.tvTitle (TextView) convertView.findViewById(R.id.tv_title);holder.tvDate (TextView) convertView.findViewById(R.id.tv_date);convertView.setTag(holder);} else {holder (ViewHolder) convertView.getTag();}TabNewsData item getItem(position);holder.tvTitle.setText(item.title);holder.tvDate.setText(item.pubdate);utils.display(holder.ivPic, item.listimage);return convertView;}}static class ViewHolder {public TextView tvTitle;public TextView tvDate;public ImageView ivPic;}Overridepublic void onPageScrollStateChanged(int arg0) {}Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}Overridepublic void onPageSelected(int arg0) {TopNewsData topNewsData mTopNewsList.get(arg0);tvTitle.setText(topNewsData.title);}
} package com.itheima.zhbj52.view;import com.itheima.zhbj52.R;import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ListView;/*** 下拉刷新的ListView*/
public class RefreshListView extends ListView {private View mHeaderView;public RefreshListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initHeaderView();}public RefreshListView(Context context, AttributeSet attrs) {super(context, attrs);initHeaderView();}public RefreshListView(Context context) {super(context);initHeaderView();}/*** 初始化头布局*/private void initHeaderView() {mHeaderView View.inflate(getContext(), R.layout.refresh_header, null);//refresh_header.xml/*?xml version1.0 encodingutf-8?LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontal FrameLayout 帧布局叠加在一起android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:paddingLeft10dpandroid:paddingRight10dpandroid:paddingTop10dp ImageViewandroid:idid/iv_arrandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:srcdrawable/common_listview_headview_red_arrow / 向下箭头ProgressBar 转圈的进度条android:idid/pb_progressandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenterandroid:visibilityinvisible //FrameLayout箭头旁边的文字LinearLayoutandroid:layout_widthwrap_contentandroid:layout_heightmatch_parentandroid:layout_gravitycenterandroid:gravitycenterandroid:orientationvertical TextViewandroid:idid/tv_titleandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text下拉刷新android:textColor#f00android:textSize20sp /TextViewandroid:idid/tv_timeandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text2015-03-10 17:07:07android:textColorandroid:color/darker_grayandroid:textSize16sp //LinearLayout/LinearLayout*/this.addHeaderView(mHeaderView);//listView加多个HeaderView的时候先加的在上面。
mHeaderView.measure(0, 0);int mHeaderViewHeight mHeaderView.getMeasuredHeight();mHeaderView.setPadding(0, -mHeaderViewHeight, 0, 0);//隐藏头布局}
} 转载于:https://www.cnblogs.com/yaowen/p/5052789.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87089.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!