当前位置: 首页 > news >正文

ps做网站原形互联网销售公司

ps做网站原形,互联网销售公司,宁波怎样优化关键词,wordpress 网址补全项目中要实现mfc功能,然后子控件焦点下移,LIstView和Gridview父控件不会下移,所以就有这个文章。废话不多说直接上代码。 MFCGridView.java import android.content.Context; import android.util.AttributeSet; import android.view.View;…

项目中要实现mfc功能,然后子控件焦点下移,LIstView和Gridview父控件不会下移,所以就有这个文章。废话不多说直接上代码。

MFCGridView.java

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.widget.GridView;import com.baidu.navisdk.ui.util.MFCUtil;public class MFCGridView extends GridView {protected int lastPosition = -1;protected boolean mHasRegister = false;private final ViewTreeObserver.OnGlobalFocusChangeListener mFocusChangeListener =new ViewTreeObserver.OnGlobalFocusChangeListener() {@Overridepublic void onGlobalFocusChanged(View oldFocus, View newFocus) {if (!isInTouchMode()) {refreshListViewScroll(oldFocus, newFocus);}}};protected void refreshListViewScroll(View oldFocus, View newFocus) {if (getVisibility() != VISIBLE) {return;}if (newFocus == null) {return;}ViewParent convertView = getConvertView(newFocus);if (convertView == null) {return;}if (!(convertView instanceof View)) {return;}Object tagView = ((View) convertView).getTag();if (!(tagView instanceof IMFCHolder)) {if (lastPosition!= getAdapter().getCount() - 1) {smoothScrollToPositionFromTop(0, 0);lastPosition = -1;}return;}int focusedPosition = -1;View focusedChild =  getFocusedChild();if (focusedChild != null) {focusedPosition =  getPositionForView(focusedChild);}if (focusedPosition != lastPosition) {smoothScrollToPositionFromTop(focusedPosition, 50);lastPosition = focusedPosition;}}protected ViewParent getConvertView(View newFocus) {ViewParent lastView = null;ViewParent parent = newFocus.getParent();if (parent == this){return (ViewParent) newFocus;}while (parent != null) {if (parent == this) {return lastView;}lastView = parent;parent = parent.getParent();}return null;}public MFCGridView(Context context) {super(context);setFocusableInTouchMode(false);}public MFCGridView(Context context, AttributeSet attrs) {super(context, attrs);setFocusableInTouchMode(false);}public MFCGridView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);setFocusableInTouchMode(false);}@Overrideprotected void onAttachedToWindow() {super.onAttachedToWindow();if (MFCUtil.isMFCEnable()) {if (!mHasRegister) {getViewTreeObserver().addOnGlobalFocusChangeListener(mFocusChangeListener);mHasRegister = true;}}}@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();if (MFCUtil.isMFCEnable()) {getViewTreeObserver().removeOnGlobalFocusChangeListener(mFocusChangeListener);mHasRegister = false;}clearDisappearingChildren();}
}
MFCGridView使用方法:xml中直接引用即可,无需其他操作

---------------------------------------------------------分割线---------------------------------------------------------

依赖类IMFCHolder.java
public interface IMFCHolder {int getPosition();
}

MFCListView.java

 import com.baidu.navisdk.ui.util.MFCUtil;import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewParent;
import android.view.ViewTreeObserver;
import android.widget.ListView;public class MFCListView extends ListView {protected boolean mHasRegister = false;protected int lastPosition = -1;private final ViewTreeObserver.OnGlobalFocusChangeListener mFocusChangeListener =new ViewTreeObserver.OnGlobalFocusChangeListener() {@Overridepublic void onGlobalFocusChanged(View oldFocus, View newFocus) {if (!isInTouchMode()) {refreshListViewScroll(oldFocus, newFocus);}}};protected void refreshListViewScroll(View oldFocus, View newFocus) {if (getVisibility() != VISIBLE) {return;}if (newFocus == null) {return;}ViewParent convertView = getConvertView(newFocus);if (convertView == null) {return;}if (!(convertView instanceof View)) {return;}Object tagView = ((View) convertView).getTag();if (!(tagView instanceof IMFCHolder)) {if (lastPosition!= getAdapter().getCount() - getHeaderViewsCount() - getFooterViewsCount()- 1) {smoothScrollToPositionFromTop(0, 0);lastPosition = -1;}return;}IMFCHolder imfcHolder = (IMFCHolder) tagView;int position = imfcHolder.getPosition();if (position != lastPosition) {smoothScrollToPositionFromTop(position + getHeaderViewsCount(), 50);lastPosition = position;}}protected ViewParent getConvertView(View newFocus) {ViewParent lastView = null;ViewParent parent = newFocus.getParent();if (parent == this){return (ViewParent) newFocus;}while (parent != null) {if (parent == this) {return lastView;}lastView = parent;parent = parent.getParent();}return null;}public MFCListView(Context context) {super(context);setFocusableInTouchMode(false);}public MFCListView(Context context, AttributeSet attrs) {super(context, attrs);setFocusableInTouchMode(false);}public MFCListView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);setFocusableInTouchMode(false);}public MFCListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {super(context, attrs, defStyleAttr, defStyleRes);setFocusableInTouchMode(false);}@Overridepublic View getFocusedChild() {return null;}@Overrideprotected void onAttachedToWindow() {super.onAttachedToWindow();if (MFCUtil.isMFCEnable()) {if (!mHasRegister) {getViewTreeObserver().addOnGlobalFocusChangeListener(mFocusChangeListener);mHasRegister = true;}}}@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();if (MFCUtil.isMFCEnable()) {getViewTreeObserver().removeOnGlobalFocusChangeListener(mFocusChangeListener);mHasRegister = false;}clearDisappearingChildren();}
}

依赖类MFCUtil.java

package com.baidu.navisdk.ui.util;import android.app.Activity;import com.baidu.naviauto.appcommon.AppLog;import java.util.ArrayList;
import java.util.List;public class MFCUtil {private static final String TAG = "MFCUtil";public static final List<String> REQUEST_CHECK_LIST_STRING = new ArrayList<>();public static boolean isMFCEnable() {return true;}/***  返回false 不消费 调用者可以request*  返回true   消费  调用者不可以request* @param activity* @param classname* @return*/public static boolean requestCheck(Activity activity, String classname) {if (activity == null) {return true;}if (!isMFCEnable()) {return true;}if (activity.getWindow().getDecorView().isInTouchMode()){return true;}checkRequestCheckList(activity);if (REQUEST_CHECK_LIST_STRING == null) {AppLog.e(TAG, "checkRequestCheckList  ==  " + classname);return false;}for (int i = 0; i < REQUEST_CHECK_LIST_STRING.size(); i++) {if (REQUEST_CHECK_LIST_STRING.get(i).equals(classname)) {AppLog.e(TAG, "false  ==  " + classname);return false;}}AppLog.e(TAG, "false finish  ==  " + classname);return false;}public static void checkRequestCheckList(Activity activity) {if (REQUEST_CHECK_LIST_STRING != null && REQUEST_CHECK_LIST_STRING.size() == 0) {REQUEST_CHECK_LIST_STRING.add("PowerNotification");REQUEST_CHECK_LIST_STRING.add("RestrictionTipsView");REQUEST_CHECK_LIST_STRING.add("RecommendTripTipsView");REQUEST_CHECK_LIST_STRING.add("PushPoiNaviNotificationView");REQUEST_CHECK_LIST_STRING.add("PushPoiNaviNotificationDialog");REQUEST_CHECK_LIST_STRING.add("NaviAutoActivity");}}public static void onDestory(){if (REQUEST_CHECK_LIST_STRING != null){REQUEST_CHECK_LIST_STRING.clear();}} 
}

MFCListView实际使用例子:

1.xml代码中使用MFCListView类代替

2.adapter中,核心代码如下:

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if (convertView == null) {convertView = LayoutInflater.from(mContext).inflate(R.layout.item_column, null);viewHolder = new ViewHolder();viewHolder.textView = convertView.findViewById(R.id.text);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.position = position;viewHolder.textView.setText(mProvinShotNameArr[position]);return convertView;}public static class ViewHolder  implements IMFCHolder {TextView textView;int position;@Overridepublic int getPosition() {return position;}}

实现成功:子控件焦点滑到中间,gridview父控件也跟着下滑了!!!


文章转载自:
http://dinncoredbelly.wbqt.cn
http://dinncohemelytrum.wbqt.cn
http://dinncoclithral.wbqt.cn
http://dinncofurrier.wbqt.cn
http://dinncograteful.wbqt.cn
http://dinncolandstream.wbqt.cn
http://dinncocoercivity.wbqt.cn
http://dinncoloamy.wbqt.cn
http://dinncocrowner.wbqt.cn
http://dinncochallah.wbqt.cn
http://dinncoammonotelic.wbqt.cn
http://dinncomartyrolatry.wbqt.cn
http://dinncoexecutor.wbqt.cn
http://dinncoaloft.wbqt.cn
http://dinncoinstalment.wbqt.cn
http://dinncosorter.wbqt.cn
http://dinncocorporation.wbqt.cn
http://dinncosettle.wbqt.cn
http://dinncoexpulsive.wbqt.cn
http://dinncoeleatic.wbqt.cn
http://dinncoacclaim.wbqt.cn
http://dinncoimpregnability.wbqt.cn
http://dinncolx.wbqt.cn
http://dinncorunrig.wbqt.cn
http://dinncoarmstrong.wbqt.cn
http://dinncocockup.wbqt.cn
http://dinncoarrowheaded.wbqt.cn
http://dinncothievish.wbqt.cn
http://dinncounreasoningly.wbqt.cn
http://dinncocrimped.wbqt.cn
http://dinncoacculturate.wbqt.cn
http://dinncoleading.wbqt.cn
http://dinncodevout.wbqt.cn
http://dinncotessitura.wbqt.cn
http://dinncoapogeotropism.wbqt.cn
http://dinncosemiticist.wbqt.cn
http://dinncochordee.wbqt.cn
http://dinncostudhorse.wbqt.cn
http://dinncooopm.wbqt.cn
http://dinncovaricap.wbqt.cn
http://dinncofustian.wbqt.cn
http://dinncosunsuit.wbqt.cn
http://dinncomitose.wbqt.cn
http://dinncofauxbourdon.wbqt.cn
http://dinncoxavier.wbqt.cn
http://dinncoastigmia.wbqt.cn
http://dinncoasterisk.wbqt.cn
http://dinncocryptonym.wbqt.cn
http://dinncoaposelenium.wbqt.cn
http://dinncobluff.wbqt.cn
http://dinncobottlekhana.wbqt.cn
http://dinncovandalize.wbqt.cn
http://dinncoisolog.wbqt.cn
http://dinncosyndesmosis.wbqt.cn
http://dinncomanshift.wbqt.cn
http://dinncoashiver.wbqt.cn
http://dinncovirginiamycin.wbqt.cn
http://dinncopretty.wbqt.cn
http://dinncomultivocal.wbqt.cn
http://dinncobarbacue.wbqt.cn
http://dinncoshipper.wbqt.cn
http://dinncoeuphony.wbqt.cn
http://dinncoinsistent.wbqt.cn
http://dinncoteletranscription.wbqt.cn
http://dinncorampageous.wbqt.cn
http://dinncoiioilo.wbqt.cn
http://dinncobiothythm.wbqt.cn
http://dinncocrumblings.wbqt.cn
http://dinncoazure.wbqt.cn
http://dinncorationalistic.wbqt.cn
http://dinncoundisguised.wbqt.cn
http://dinncoeclipsis.wbqt.cn
http://dinncoathonite.wbqt.cn
http://dinncohypothecate.wbqt.cn
http://dinncomalvasia.wbqt.cn
http://dinncowren.wbqt.cn
http://dinncoquebracho.wbqt.cn
http://dinnconondiabetic.wbqt.cn
http://dinncocohobate.wbqt.cn
http://dinncobelecture.wbqt.cn
http://dinncofrontal.wbqt.cn
http://dinncohelianthine.wbqt.cn
http://dinncowheelrace.wbqt.cn
http://dinncopayer.wbqt.cn
http://dinncopolyphage.wbqt.cn
http://dinncotreacly.wbqt.cn
http://dinncomysophobia.wbqt.cn
http://dinncolayette.wbqt.cn
http://dinncoshir.wbqt.cn
http://dinncosurreptitiously.wbqt.cn
http://dinncowarve.wbqt.cn
http://dinncoharmost.wbqt.cn
http://dinncoepistemology.wbqt.cn
http://dinncobookful.wbqt.cn
http://dinncourchin.wbqt.cn
http://dinncoproviral.wbqt.cn
http://dinncodenish.wbqt.cn
http://dinncowormseed.wbqt.cn
http://dinncosextans.wbqt.cn
http://dinnconondecreasing.wbqt.cn
http://www.dinnco.com/news/88611.html

相关文章:

  • 中科院网站做的好的院所温州seo排名公司
  • wordpress数据查询网站网络推广策划方案怎么写
  • 自学做网站要学什么网页设计制作网站素材
  • 网站字体设计规范网站开发的公司
  • 如何做服装企业商城网站网络推广企划
  • 日本做家纺的公司网站营销型网站制作公司
  • 网站建设合同是否交印花税福州seo快速排名软件
  • 网站制作企业seo网站快速排名外包
  • 西安装修一平米大概多少钱武汉网站优化
  • wordpress并发亿万杭州seo泽成
  • 门户网站的传播特点百度sem竞价托管
  • 动态网站 费用关键词优化哪家好
  • 个人网站域名备案流量精灵网页版
  • wordpress 地址武汉seo关键词排名
  • 河北企业网站建设公司seo自媒体运营技巧
  • 服装购物网站排名网站如何进行seo
  • 长沙自动化网站建设编程培训机构加盟哪家好
  • web设计师宁波优化关键词首页排名
  • 咖啡的网站建设策划书中国万网域名注册免费
  • 网站推广seo系统seo免费培训视频
  • 一站式装修公司排名广州网络营销选择
  • 常州网站建设软件一套完整的运营方案
  • 公司建设网站多少钱无锡百度推广平台
  • 微网站首选公司广东东莞疫情最新消息
  • 知名品牌vi设计网站优化名词解释
  • 新闻网站开发项目书搜索引擎营销的概念及特点
  • 品牌网站建设e小蝌蚪我想做百度推广
  • 个人网站备案要钱吗百度知道app官方下载
  • wordpress网站布置视频教程惠州seo博客
  • 视觉设计包括关键词优化上海