android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现

## ViewPagerIndicator ##  使用导入ViewPagerIndicator库的方式相当于可以改源码,打包编译Eclips可以自动完成。ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面1. 引入ViewPagerIndicator库
2. 编写布局文件<com.viewpagerindicator.TabPageIndicatorandroid:id="@+id/indicator"android:layout_width="fill_parent"android:layout_height="wrap_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=".MainActivity"android:theme="@style/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 ArrayList<TabDetailPager> mPagerList;//11个标签页private ArrayList<NewsTabData> mNewsTabData;// 页签网络数据private TabPageIndicator mIndicator;//viewpagerindicator实现的标签头public NewsMenuDetailPager(Activity activity,ArrayList<NewsTabData> children) {super(activity);mNewsTabData = children;}@Overridepublic View initViews() {View view = View.inflate(mActivity, R.layout.news_menu_detail, null);//返回给上层flContent的页面View对象。/*<?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" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><com.viewpagerindicator.TabPageIndicator    ViewPager页标签的固定写法android:id="@+id/indicator"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1" /><ImageButton     可以切换页标签的按钮android:id="@+id/btn_next"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:background="@android:color/transparent"android:padding="5dp"android:src="@drawable/news_cate_arr"    图片/> </LinearLayout><android.support.v4.view.ViewPagerandroid:id="@+id/vp_menu_detail"android:layout_width="match_parent"android:layout_height="match_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 ArrayList<TabDetailPager>();// 初始化页签数据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 ArrayList<TopNewsData> mTopNewsList;// 头条新闻数据集合
@ViewInject(R.id.indicator)private CirclePageIndicator mIndicator;// 头条新闻位置指示器,安卓自带的(4个黑色的指示位置的圆点,还支持点击)
@ViewInject(R.id.lv_list)private RefreshListView lvList;// 新闻列表private ArrayList<TabNewsData> 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 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" ><com.itheima.zhbj52.view.RefreshListView    下拉刷新的文字和箭头部分,这也是一个ListView。android:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="0dp"android:cacheColorHint="#fff"android:layout_weight="1" ></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 version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content" ><com.itheima.zhbj52.view.TopNewsViewPagerandroid:id="@+id/vp_news"android:layout_width="match_parent"android:layout_height="200dp" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:background="#a000"android:padding="3dp" ><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#fff"android:textSize="16sp" /> <com.viewpagerindicator.CirclePageIndicator       安卓自带的(4个黑色的指示位置的圆点,还支持点击)android:id="@+id/indicator" android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:padding="10dip"app:fillColor="#f00"app:pageColor="@android:color/darker_gray"app:radius="3dp"app:strokeWidth="0dp" /></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 RequestCallBack<String>() {@Overridepublic void onSuccess(ResponseInfo<String> 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 version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content" android:padding="10dp"><ImageViewandroid:id="@+id/iv_pic"android:layout_width="110dp"    图片大小写死android:layout_height="70dp"android:scaleType="fitXY"       小了的话填满android:padding="1dp"android:background="@android:color/darker_gray"   背景是黑颜色,并且设置padding=1dp,这样就实现了图片周围有黑框。android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:src="@drawable/image_demo" /><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginLeft="20dp"android:layout_toRightOf="@+id/iv_pic"android:text="新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题"android:textColor="#000"android:maxLines="2"android:ellipsize="end"     多余文字在末尾加......android:textSize="20sp" /><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@id/tv_title"android:text="2015-03-16 16:20"android:layout_alignBottom="@id/iv_pic"android:textColor="@android:color/darker_gray"android:textSize="16sp" /></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 version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><FrameLayout                                帧布局,叠加在一起android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="10dp"android:paddingRight="10dp"android:paddingTop="10dp" ><ImageViewandroid:id="@+id/iv_arr"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:src="@drawable/common_listview_headview_red_arrow" />   向下箭头<ProgressBar                            转圈的进度条android:id="@+id/pb_progress"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:visibility="invisible" /></FrameLayout>箭头旁边的文字<LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="center"android:gravity="center"android:orientation="vertical" ><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下拉刷新"android:textColor="#f00"android:textSize="20sp" /><TextViewandroid:id="@+id/tv_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="2015-03-10 17:07:07"android:textColor="@android:color/darker_gray"android:textSize="16sp" /></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/news/375267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 获取随机数字的三种方法

1 //方法1 (数据类型)2 //(最小值Math.random()*(最大值-最小值1))3 // 例:4 (int)(1Math.random()*(10-11)) //从1到10的int型随数5 6 方法2 获得随机数7 for (int i0;i<30;i)8 {9 System.out.println((int)(1Math.random()*10)); 10 } 11 (int)(1Math.random()*10) 1…

LVS原理及实践(NAT模式)

LVS无论NAT及DR模式&#xff0c;均要求LVS server和real server在同一个网段内&#xff0c;NAT需要把lvs server当作各个realserver的默认网关&#xff0c;DR模式采用修改mac地址直接从数据链路层转发、要求必须在同一个物理网段内 LVS-NAT的实验网络拓扑&#xff1a; 采用青…

基于Maven的spring_security入门

配置文件的修改点没什么变化&#xff0c;可以参考&#xff1a;http://blog.csdn.net/ouitiken/article/details/8830505 pom.xml的依赖参考&#xff1a; <dependencies><!-- Commons --><dependency><groupId>commons-dbcp</groupId><artifac…

使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)

前言 为了保证每周一篇的进度&#xff0c;又由于Vitamio新版本没有发布&#xff0c; 决定推迟本地播放的一些功能&#xff08;截图、视频时间、尺寸等&#xff09;&#xff0c;跳过直接写在线播放部分的章节。从Vitamio的介绍可以看得出&#xff0c;其支持http、m3u8等多种网络…

20个新鲜出炉的网站模板【HTML PSD】

这里给大家分享20 个新鲜出炉的免费网站模板。这些设计元素将成为你下一个项目的重要素材&#xff0c;可以帮你节省很多的时间。与往常一样&#xff0c;我们经常漫游网络&#xff0c;寻找最好的资源&#xff0c; HTML、CSS 和 PSD 等等&#xff0c;记得关注啊。 您可能感兴趣的…

位运算总结(百科)

位运算 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。 位运算 - 定义 在很多系统程序中常要求在位(bit)一级进行运算或处理。&#xff23;语言提供了位运算的功能&#xff0c; 这使得&#xff23;语言也能像汇编语…

归档(转)

如果是自定义类型的归档和解档&#xff0c;是按以下步骤实现如果不是自定义类型&#xff0c;直接第四步就可以。一、创建一个类User二、在User.h中遵循NSCoding协议 #import <Foundation/Foundation.h> interface User : NSObject<NSCoding> { int _userAge;//例子…

相遇

CPU直接识别的唯一语言是机器语言,为了克服机器语言的缺点,便将机器指令用便于记忆、并能描述指令功能的符号来表示称为指令助记符简称助记符 汇编语言由汇编指令,伪指令,和其它符号组成 汇编指令:机器码的助记符,有对应的机器码 伪指令:没有对应的机器码由编译器执行 其它符号…

相识

编译器&#xff1a;MASM 调试程序&#xff1a;DEBUG 编辑器&#xff1a;EditPlus

MySQL show命令的用法

show tables或show tables from database_name; // 显示当前数据库中所有表的名称show databases; // 显示mysql中所有数据库的名称show columns from table_name from database_name; 或show columns from database_name.table_name; // 显示表中列名称show grants for user_n…

怎么用代码制作WordPress的归档页面

先看看效果&#xff0c;这个是我网站的归档页面&#xff1a;http://www.shenjieblog.com/archives 其实WordPress自带了一个归档的功能&#xff0c;但是只能显示在网页中的某一个部分&#xff0c;但是我想单独制作一个归档页面&#xff0c;因为看见很多网站都有这个&#xff0c…

【web必知必会】—— 使用DOM完成属性填充

本文介绍了使用DOM的简单方法实现动态加载图片的功能。 前文介绍了&#xff1a; 1 DOM四个常用的方法 首先看一下效果&#xff0c;初始时是一个相册&#xff0c;可以点击导航&#xff0c;切换图片&#xff0c;并切换下方显示内容&#xff1a; 点击house&#xff0c;可以动态的切…

地址总线 数据总线

地址总线&#xff1a; CPU地址总线的宽度决定了它能寻址多少个内存单元地址,一个CPU有N根地址总线那么它的寻址能力为2^N次方。8086CPU地址总线宽度为20可寻址2^20次方个内存单元地址大小为1M。80386地址总线宽度为32可寻址内存为4GB 数据总线&#xff1a; CPU与存储器之间的数…

Spring事务配置方式(一) 拦截器方式配置

一、使用<tx:advice>和<aop:config>配置事务 <!-- 配置事务管理器 --><bean id"transactionManager" class"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name"dataSource" ref&qu…

8086寄存器组

寄存器(14个)|AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES| >通用寄存器 数据寄存器(存放一般数据)AX (AH,AL) | BX (BH,BL) | CX (CH,CL) | DX (DH,DL) 指针寄存器 堆栈指针 基址指针SP BP (SS:SP) 变址寄存器 源地址 目的地址SI …

学习动态性能表(10)--v$session_longops

学习动态性能表 第十篇--V$SESSION_LONGOPS 2007.6.7 本视图显示运行超过6秒的操作的状态。包括备份&#xff0c;恢复&#xff0c;统计信息收集&#xff0c;查询等等。 要监控查询执行进展状况&#xff0c;你必须使用cost-based优化方式&#xff0c;并且&#xff1a; 设置TIME…

存储器

存储器以字节为单位存储信息,一个存储单元存储一个字节。一个字需要用两个连续的存储单元。 每一个存储单元有唯一的地址&#xff0c;称为存储单元地址。

JDBC常用API小结

建立数据库链接的三种方式&#xff1a; package com.victor_01;import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties;import org.junit.Test;public class Test1 {private String…

学习动态性能表(12)--v$db_object_cache

学习动态性能表 第12篇--V$DB_OBJECT_CACHE 2007.6.4 本视图提供对象在library cache(shared pool)中对象统计&#xff0c;提供比v$librarycache更多的细节&#xff0c;并且常用于找出shared pool中的活动对象。 v$db_object_cache中的常用列&#xff1a; OWNER&#xff1a;对…