《新闻阅读器》总结”五“

来源:互联网 发布:淘宝可以绑定信用卡吗 编辑:程序博客网 时间:2024/05/29 05:56

上全部代码:

MainActivity:

这里有一个方法:

获得viewPager当前停留的页面

.addOnPageChangeListener()

/** *  1.实现选项卡的切换,点击RadioButton,跳转到指定的页面 *  2.实现ViewPager的切换,并让对应的RadioButton字体颜色发生改变 *  3.让自定义的 "指示条" 随着ViewPager的切换而移动 * */public class MainActivity extends FragmentActivity implements View.OnClickListener {    private List<Fragment> mFragmentList;    private ViewPager mViewPager;    private MyFragmentPagerAdapter mFragmentPagerAdapter;    private RadioButton rbTop;    private RadioButton rbYule;    private RadioButton rbGuonei;    private RadioButton rbTiyu;    private RadioButton rbKeji;    private TextView tvLine;    private int screen1_5;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initVariable();        initData();        bindAdapter();        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tvLine.getLayoutParams();                lp.leftMargin = (int) (positionOffset * screen1_5) + screen1_5 * position;                tvLine.setLayoutParams(lp);            }            @Override            public void onPageSelected(int position) {//返回所在页面的位置,设置匹配选项卡的颜色                clearColor();                switch (position) {                    case 0:                        rbTop.setTextColor(Color.parseColor("#0026ff"));                        break;                    case 1:                        rbYule.setTextColor(Color.parseColor("#0026ff"));                        break;                    case 2:                        rbGuonei.setTextColor(Color.parseColor("#0026ff"));                        break;                    case 3:                        rbKeji.setTextColor(Color.parseColor("#0026ff"));                        break;                    case 4:                        rbTiyu.setTextColor(Color.parseColor("#0026ff"));                        break;                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });        initListener();    }    void initVariable() {        mFragmentList = new ArrayList<>();        mViewPager = (ViewPager) findViewById(R.id.vpViewPager);        rbGuonei = (RadioButton) findViewById(R.id.rbGuonei);        rbTiyu = (RadioButton) findViewById(R.id.rbTiyu);        rbTop = (RadioButton) findViewById(R.id.rbTop);        rbYule = (RadioButton) findViewById(R.id.rbYule);        rbKeji = (RadioButton) findViewById(R.id.rbKeji);        tvLine = (TextView) findViewById(R.id.tvLine);    }    void initListener() {        rbTop.setOnClickListener(this);        rbGuonei.setOnClickListener(this);        rbYule.setOnClickListener(this);        rbTiyu.setOnClickListener(this);        rbKeji.setOnClickListener(this);    }    void initData() {        mFragmentList.add(new TopFragment());        mFragmentList.add(new YuleFragment());        mFragmentList.add(new GuoneiFragment());        mFragmentList.add(new KejiFragment());        mFragmentList.add(new TiyuFragment());        //获得屏幕宽度        DisplayMetrics metric = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(metric);        int width = metric.widthPixels;     // 屏幕宽度(像素)        screen1_5 = width / 5;        ViewGroup.LayoutParams zy = tvLine.getLayoutParams();        zy.width = screen1_5;        tvLine.setLayoutParams(zy);    }    void bindAdapter() {        mFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), mFragmentList);        mViewPager.setAdapter(mFragmentPagerAdapter);    }    void clearColor() {        rbTop.setTextColor(Color.parseColor("#ff0004"));        rbYule.setTextColor(Color.parseColor("#ff0004"));        rbGuonei.setTextColor(Color.parseColor("#ff0004"));        rbKeji.setTextColor(Color.parseColor("#ff0004"));        rbTiyu.setTextColor(Color.parseColor("#ff0004"));    }    @Override    public void onClick(View view) {        switch (view.getId()) {//.setCurrentItem(2) 设置所显示的页面            case R.id.rbGuonei:                mViewPager.setCurrentItem(2);                break;            case R.id.rbTiyu:                mViewPager.setCurrentItem(4);                break;            case R.id.rbYule:                mViewPager.setCurrentItem(1);                break;            case R.id.rbTop:                mViewPager.setCurrentItem(0);                break;            case R.id.rbKeji:                mViewPager.setCurrentItem(3);                break;        }    }}
WebViewActivity:

/** * webView 的使用方法 */public class WebViewActivity extends Activity {    private static final String TAG = "WebViewActivity";    private WebView mWebView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.webview);        Intent intent = getIntent();        String url = intent.getStringExtra("url");        Log.i(TAG, url);        mWebView = (WebView) findViewById(R.id.webView);        mWebView.loadUrl(url);    }}

NewsListViewAdapter:

public class NewsListViewAdapter extends BaseAdapter {    private List<MyNews> mList;    private Context mContext;    private static final String TAG="NewsListViewAdapter";    public NewsListViewAdapter(Context pContext, List<MyNews> pList) {        mList = pList;        mContext = pContext;    }    @Override    public int getCount() {        return mList.size();    }    @Override    public Object getItem(int i) {        return mList.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder mHolder;        if (view == null) {            mHolder = new ViewHolder();            view = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);            mHolder.author = (TextView) view.findViewById(R.id.tvAuthor);            mHolder.time = (TextView) view.findViewById(R.id.tvTime);            mHolder.title = (TextView) view.findViewById(R.id.tvTitle);            mHolder.img = (ImageView) view.findViewById(R.id.imageView1);            view.setTag(mHolder);        } else {            mHolder = (ViewHolder) view.getTag();        }        String sAuthor = "来自:" + mList.get(i).author;        String sTime = "发表时间:" + mList.get(i).date;        mHolder.author.setText(sAuthor);        mHolder.time.setText(sTime);        mHolder.title.setText(mList.get(i).title);        Log.d(TAG, mList.get(i).imgURl1);        if (TopFragment.zangyi==2) {//打开网络通过子线程加载图片并显示            String mUrl=mList.get(i).imgURl1;            mHolder.img.setTag(mUrl);            new ImageLoader().showImage(mHolder.img,mUrl);//从网络上获取图片       } else {//否则显示默认的图片            mHolder.img.setImageResource(R.mipmap.ic_launcher);        }        return view;    }    class ViewHolder {        TextView author;        TextView time;        TextView title;        ImageView img;    }}
/** * 1.启动时,mTopList 从数据库中通过(getData)获得数据源, * 绑定ListViewAdapter,显示ListView。 * 2.按下"下拉刷新按钮"时,通过UrlGetJson这个类获取新闻json数据源, * 并通过Handler,调用mParseJson这个类来解析json数据源,存储到数据库中, * 在从数据库中重新获得数据源,并通知ListView更新。 */public class TopFragment extends Fragment {    private List<MyNews> mTopList;    private ListView mListView;    private NewsListViewAdapter mAdapter;    private static final String mType = "Top";    private static final String TAG = "TopFragment";    public static int zangyi = 1;    private Button btHaveNet;    private Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            switch (msg.what) {                case 10086:                    String json = (String) msg.obj;                    Log.i(TAG, json);                    //进行json解析                    NewsDB mNewsDB2 = NewsDB.getNewDB(getContext());                    mNewsDB2.deleteAll(mType);                    //调用ParseJson这个类进行json解析                    ParseJson mParseJson = new ParseJson(getContext(), json, mType);                    mParseJson.parseJSONWithJSONObject();                    //从数据库中返回数据 通知ListView更新                    mTopList.addAll(mNewsDB2.getData(mType));                    if (mTopList.size() > 0 && mAdapter != null) {                        mAdapter.notifyDataSetChanged();                        Log.e(TAG, "通知更新");                    }                    break;            }        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View mView = inflater.inflate(R.layout.top_fragment, null);        Button btSend = (Button) mView.findViewById(R.id.btTobSend);        mTopList = new ArrayList<>();        mListView = (ListView) mView.findViewById(R.id.lvTop);        btHaveNet = (Button) mView.findViewById(R.id.btHaveNet);        //从数据库中获得数据源        NewsDB hi = NewsDB.getNewDB(getContext());        mTopList.addAll(hi.getData(mType));        mAdapter = new NewsListViewAdapter(getContext(), mTopList);        mListView.setAdapter(mAdapter);        btHaveNet.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                if (zangyi == 1) {                    zangyi = 2;                    btHaveNet.setText("网络已开");                } else {                    zangyi = 1;                    btHaveNet.setText("网络已关");                }            }        });        btSend.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                UrlGetJson mHttp = new UrlGetJson(mHandler, mType);                mHttp.sendRequestWithHttpURLConnection();            }        });        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                Intent intent = new Intent(getActivity(), WebViewActivity.class);                intent.putExtra("url", mTopList.get(i).newURL);                startActivity(intent);            }        });        return mView;    }}

0 0
原创粉丝点击