編輯:關於Android編程
要實現的一個簡單的功能:
大致說下:
TabHost中自定的每個可以點擊的區域,可以設置為點擊切換Tab,兩次點擊同一個Tab,刷新當前tab,那麼ViewPage也可以那樣的,但是有個第三方的viewpagerindicator,項目裡直接用這個;
文字描述:
在ViewPage中的三個Fragment之間滑動的時候不刷新每個Fragment的內容,在點擊ViewPage上面的Indicate時刷新每個Fragment;
簡單實現的一些想法:
TabHost比較簡單,點擊tab1時,如果當前顯示tab1,則刷新,否則切換tab
tabHost.addTab(tabHost.newTabSpec(tab+i).setIndicator(tabView[i])
.setContent(tabContent[i]));
tabView[i].setTag(i);
tabView[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int tabId=Integer.parseInt(v.getTag().toString());
if(tabId==tabHost.getCurrentTab()){
reloadByTabId(tabId);
}else {
tabHost.setCurrentTab(tabId);
changeTabCotent(tabId);
}
}
});
ViewPage也可以像TabHost一樣,不過用了第三方的,那麼就重新換個思路;
CONTENT =new String[]{};
FRAMES = new Fragment[]{};
initIndicator(,CONTENT,FRAMES);
adapter = new ViewPageAdapter(getSupportFragmentManager());
mViewPage = (MyViewPager)findViewById(R.id.pager);
mViewPage.setAdapter(adapter);
mViewPage.setOffscreenPageLimit(0);
TabPageIndicator indicator =(TabPageIndicator)findViewById(R.id.indicator);
indicator.setViewPager(mViewPage, selectIndex);
indicator.setOnPageChangeListener(new ViewPageListener());
有的說viewPage中超出一定數量的Fragment切換回來後界面變白了,也不清楚是什麼原因,那麼在ViewPage中攔截destroyItem():
class ViewPageAdapter extends FragmentPagerAdapter {
public ViewPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return FRAMES[position % CONTENT.length];
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length];
}
@Override
public int getCount() {
return CONTENT.length;
}
@Override
public void destroyItem(View container, int position, Object object) {
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}
}
class ViewPageListener implements OnPageChangeListener {
private int offset = 0;
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
offset = arg2;
if(isInit&&arg1==0&&arg2==0){
onPageSelected(arg0);
isInit = false;
}
}
@Override
public void onPageSelected(int arg0) {
if(adapter!=null){
Fragment fragment = adapter.getItem(arg0);
if(fragment instanceof MyBaseFragment){
MyBaseFragment myFragment = (MyBaseFragment)fragment;
myFragment.onViewPageSelection(arg0,offset);
}
}
}
}
在單個Fragment中獲取Viewpager事件通知:
@Override
public void onViewPageSelection(int index,int offset) {
super.onViewPageSelection(index,offset);
selectedIndex = index;
setPositon(index);
if(!hasLoadOk.containsKey(index)||hasLoadOk.get(index)==false){
isShowProgress = false;
startLocation(true,false);
}else if(offset==0){
isShowProgress = true;
loadData(true);
}
}
當我們在手機上安裝360安全衛士時,手機屏幕上時刻都會出現一個小浮動窗口,點擊該浮動窗口可跳轉到安全衛士的操作界面,而且該浮動窗口不受其他activity的覆蓋影響仍然可
最近軟文的東西寫的比較少,家裡的小寶寶(麥麥)咬毛了,在細心照料。外加最近玩WOW比較上頭,所以沒花大時間在寫文章上,今天看到個實現APP內提示跳轉應用市場的庫覺得還不錯
隨著互聯網技術的不斷進步,Android的Vector圖像的時代已經到來. 在Google的最新支持庫v23.2中, AppCompat類已經使用Vector
首先我們發現現在我們所用的android智能手機大部分都有當你在打電話時按power鍵來掛斷電話,一般都是在設置中。 我主要是在原生源碼中添加這一功能,主要用於學習。。。