精华内容
下载资源
问答
  • 在Android4.0中,Contacts 拨号界面的分页方式是怎么样的呢?是通过传统的TabHost+tab的方式吗? 不是的,而是通过ActionBar + tab+ view Pager的方式实现的。 具体的实现详情,请见下面的详细剖析。 在...

    在Android4.0中,Contacts 拨号界面的分页方式是怎么样的呢?是通过传统的TabHost+tab的方式吗?

    不是的,而是通过ActionBar + tab+ view Pager的方式实现的。

    具体的实现详情,请见下面的详细剖析。

    在DialtactsActivity类中,通过向ActionBar中添加Tab的方式实现分页,每页显示的内容,则通过ViewPager对象设置的Adapter对象来设置。

    在onCreate()方法中

    顺序调用

    setupDialer();

    setupCallLog();

    setupFavorites();

    方法加载将三哥tab加载到ActionBar中

    下面以setupDialer为例,逐行描述一下其加载过程

    private void setupDialer(){

           final Tab tab = getActionBar().newTab();

           tab.setContentDescription(R.string.dialerIconLabel);

           tab.setTabListener(mTabListener);      

           tab.setIcon(R.drawable.ic_tab_dialer);

           getActionBar().addTab(tab);

     }

    final Tab tab =getActionBar().newTab();

    新建一个Tab页

    tab.setContentDescription(R.string.dialerIconLabel);

    为该tab也设置描述,基本上没意义,也不显示,只是存储一些临时的数据

    tab.setTabListener(mTabListener);

    设置监听器,当点击该tab页时触发该事件

    tab.setIcon(R.drawable.ic_tab_dialer);

    给该tab也添加显示的图标

    getActionBar().addTab(tab);

    将该tab页添加到ActionBar中

    其它几个方法的具体实现也类似。

    那么,您想想, Activity多次调用getActionBar().addTab(tab) 添加tab都是添加到一个ActionBar中了吗?有此疑问的朋友请点击 

    那么创建三个tab就可以了吗?

    不是的,DialtactsActivity中又对ActionBar进行了下面的处理

    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    getActionBar().setDisplayShowTitleEnabled(false);

    getActionBar().setDisplayShowHomeEnabled(false);

    第一句将ActionBar设置为“Tab导航”模式

    第二句将ActionBar设置为标题不可见

    第三句将ActionBar设置为显示主界面按钮不可用

     

    是不是感觉缺了点什么?tab页内显示的内容呢?

    先别急,我们继续往下走

    上文提到tab.setTabListener(mTabListener),现在我们来看看这个监听器到底做了什么

     

    private final TabListenermTabListener = new TabListener() {

      @Override

      public void onTabUnselected(Tab tab, FragmentTransaction ft){

      }

     @Override

      public void onTabSelected(Tab tab, FragmentTransaction ft){

          if (mViewPager.getCurrentItem() != tab.getPosition()) {

                mViewPager.setCurrentItem(tab.getPosition(), true);        

           }

    ….

       }

     

           @Override

       public void onTabReselected(Tab tab, FragmentTransaction ft){

           }

       };

    看到了吗?

      if (mViewPager.getCurrentItem() !=tab.getPosition()) {

                mViewPager.setCurrentItem(tab.getPosition(), true);        

      }

    将tab和ViewPager联系到一起了。

    tab.getPosition()获得当前tab的位置返回int值

    mViewPager.getCurrentItem()返回滑动页当前的item编号,返回int值

    mViewPager.setCurrentItem(tab.getPosition(), true);设置viewPager的平滑滚动到tab设置的位置

    当tab的位置和ViewPager的当前页不等时,重新设置viewpager的当前页

    看样子就是这了,tab页的内容肯定就是通过mViewPager来设置的。

     

    下面我们继续跟进mViewPager

    private ViewPager mViewPager;

    首先声明mViewPager为类的私有成员

    在onCreate()方法中被初始化

    mViewPager = (ViewPager)findViewById(R.id.pager);

    mViewPager.setAdapter(newViewPagerAdapter(getFragmentManager()));

    mViewPager.setOnPageChangeListener(mPageChangeListener);

    第一句

    mViewPager = (ViewPager)findViewById(R.id.pager);

    我们来看类的布局文件dialtacts_activity.xml文件

    在该文件中有一处

    <com.android.contacts.activities.DialtactsViewPager

           android:id="@+id/pager"

           android:layout_width="match_parent"

           android:layout_height="match_parent" />

    原来mViewPager就是布局中的pager啊

    com.android.contacts.activities.DialtactsViewPager

    好像不是传统的ViewPager,难道DialtactsViewPager继承了DialtactsViewPager?

    答案是正确的

    public classDialtactsViewPager extends ViewPager

     

    好,我们接下来继续看看viewPager对象往下都做了些什么

    第二句mViewPager.setAdapter(newViewPagerAdapter(getFragmentManager()));

    为ViewPager对象设置了一个Adapter

    我们来看看Adapter的具体内容

    public classViewPagerAdapter extends FragmentPagerAdapter {

           private DialpadFragment mDialpadFragment;

           private CallLogFragment mCallLogFragment;

           private PhoneFavoriteFragment mPhoneFavoriteFragment;

     

           public ViewPagerAdapter(FragmentManager fm) {

               super(fm);

           }

     

           @Override

           public Fragment getItem(int position) {

               switch (position) {

                   case TAB_INDEX_DIALER:

                       if (mDialpadFragment == null) {

                            mDialpadFragment= new DialpadFragment();

                       }

                       return mDialpadFragment;

                            …

               }

               throw new IllegalStateException("No fragment at position " +position);

           }

     

           @Override

           public int getCount() {

               return TAB_INDEX_COUNT;

           }

       }

    哦,我明白了,原来在Adapter里面建立了三种Fragment对象

    然后通过当前的选中位置来返回当前页是哪个fragment对象,在fragment对象里面设置页面的具体内容。

     

    既然Adapter设置好了,已经可以滑动了,也就是已经可以实现切换效果了,google接下来还要干什么了呢?

    mViewPager.setOnPageChangeListener(mPageChangeListener);

      private classPageChangeListener implementsOnPageChangeListener{

        private int mCurrentPosition = -1;

        private int mNextPosition = -1;

     

        @Override

        public void onPageScrolled(

               int position, float positionOffset, int positionOffsetPixels){

        }

         @Override

         public void onPageSelected(int position) {

            final ActionBar actionBar = getActionBar();

            if (mCurrentPosition == position) {

              Log.w(TAG,"Previous position and next position became same (" + position +")");

            }

            actionBar.selectTab(actionBar.getTabAt(position));

            mNextPosition = position;

         }

         public void setCurrentPosition(int position) {

               mCurrentPosition= position;

         }

         @Override

         public void onPageScrollStateChanged(int state) {

               switch (state) {

                   case ViewPager.SCROLL_STATE_IDLE: {

                       if (mCurrentPosition >= 0) {

                           sendFragmentVisibilityChange(mCurrentPosition,false);

                       }

                       if (mNextPosition >= 0) {

                           sendFragmentVisibilityChange(mNextPosition, true);

                       }

                       invalidateOptionsMenu();

     

                       mCurrentPosition = mNextPosition;

                       break;

                   }

                   case ViewPager.SCROLL_STATE_DRAGGING:

                   case ViewPager.SCROLL_STATE_SETTLING:

                   default:

                       break;

               }

           }

       }

    private FragmentgetFragmentAt(int position) {

           switch (position) {

               case TAB_INDEX_DIALER:

                   return mDialpadFragment;

               case TAB_INDEX_CALL_LOG:

                   returnmCallLogFragment;

               case TAB_INDEX_FAVORITES:

                   return mPhoneFavoriteFragment;

               default:

                   throw new IllegalStateException("Unknown fragment index: " +position);

           }

       }

     

       private void sendFragmentVisibilityChange(int position, booleanvisibility) {

           final Fragment fragment = getFragmentAt(position);

           if (fragment instanceof ViewPagerVisibilityListener) {

               ((ViewPagerVisibilityListener)fragment).onVisibilityChanged(visibility);

           }

    }

    通过上面的操作,了解到PageChangeListener 的主要作用是在页面滑动过程中,menu菜单键有可见到不可见的。


    展开全文
  • 我是深圳市办理E8套餐送的这个MODEM,一直都不能够自动拨号,都是连接路由以后然后连接宽带才能够上网,最近因为linux下的原因,我才了解下这个MODEM到底是怎么回事,反正是有点误导人,网上有很多设置办法,这里我...

    我是深圳市办理E8套餐送的这个MODEM,一直都不能够自动拨号,都是连接路由以后然后连接宽带才能够上网,最近因为linux下的原因,我才了解下这个MODEM到底是怎么回事,反正是有点误导人,网上有很多设置办法,这里我就把有点误导的地方写出来就好了:

     

    1.首先是进入设置界面,这个型号的无线MODEM用户手册上给出的用户名密码只能进入阉割版的设置界面,这个估计就是大多数人为什么不能设置的原因,请大家使用这个用户名密码进入:在浏览器输入192.168.1.1进入登录MODEM界面,用用户名telecomadmin,密码nE7jA%5m登录。

     

    2.进入设置界面后,点网络——宽带设置,按如下的图片设置:

     

     

    3.注意上图的连接名称,将后面下拉菜单中的所有项目删除,然后你就会短线了,再按照上图进行设置,注意vpi和vci号是根据地区不同而不同,我在深圳是8/35,其他地方查百度一下,好了就创建,然后从重启路由就好了(点管理——设备管理,点重启 。

     

    转载于:https://www.cnblogs.com/thepiece/archive/2010/02/21/1670677.html

    展开全文
  • 您好,呼叫转移只需在拨号界面输入相应的代码就可以,无需其他设置无条件转移 **21*电话号码#再按拨号键 取消代码:##21# *#21# 再按拨号键无信号,关机转移 **62*电话号码#再按拨号键 取消代码:##62# *#62# 再按...
    您好,呼叫转移只需在拨号界面输入相应的代码就可以,无需其他设置
    无条件转移 **21*电话号码#再按拨号键       取消代码:##21# *#21# 再按拨号键
    无信号,关机转移 **62*电话号码#再按拨号键     取消代码:##62# *#62# 再按拨号键
    无应答转移 **61*电话号码*10*响铃时间# 再按拨号键 取消代码: ##61# *#61#再按拨号键
    遇忙转移  **67#电话号码#再按拨号键        取消代码:##67# *#67# 再按拨号键

    你想转移到哪个号码,就在“电话号码”这里输入哪个号码

    转载于:https://www.cnblogs.com/hero11223/p/7248751.html

    展开全文
  • 大家都知道Linux系统安全性比较高,所以在网络上的运用也是相当的广泛,下面就由学习啦小编跟大家分享Linux系统如何设置拨号上网吧,希望对大家有所帮助~Linux系统设置拨号上网的方法当然有界面设置更加方便,...

    Linux系统有好多种类,像我们经常碰到的centos、ubuntu或redhat;有的系统是有操作界面的,有的直接是命令模式,命令模式的适合做服务器,大家都知道Linux系统安全性比较高,所以在网络上的运用也是相当的广泛,下面就由学习啦小编跟大家分享Linux系统如何设置拨号上网吧,希望对大家有所帮助~

    Linux系统设置拨号上网的方法

    当然有界面的设置更加方便,那么没界面的系统只能从配置文件中修改,小编就把从配置文件中设置拨号上网的方式呈现下。

    不管有没有界面操作,此配置都可以使用,大家知道Linux系统查看文件的命令有很多,只要目录才是关键,通过more /etc/sysconfig/network-scripts/ifcfg-ppp0 命令跟目录的方式知道系统文件下进行对pppoe拨号账号设置具体方式参考下图。

    99fbeead7e564f617a9d0c69be68074d.png

    为了提高安全性。密码放置在sysconfig文件目录下,密码就放置在密码文件。密码放置的目录在/etc/ppp/下,从下图我们就可以看到需要pap和chap验证的2个文件。

    99e331300a064c3419c941b8f56ddf1a.png

    找到目录我们就进入设置密码,我们可以看到账号和密码都是以“”表示隔开。大家在设置账号密码的时候记得两个文件都需要更改。

    修改了配置文件就不需要图形界面的配置了;

    9e4034f3e3c6b106b38c1e986d930e0d.png

    更改配置文件的命令是vi,通常我们说的是vi编辑器就是这个,通过vi编辑器修改里面的配置。

    faa5c539887a1e121ed07c8bd91541d7.png

    有的朋友对于编辑器不太熟悉,狂用ctrl+c,+v,+z但是都是行不通,Linux下退出编辑器的命令是:q表示直接退出不保存;如果需要保存那么就:wq,意思是write quit的意思,保存退出。

    2a45cc08d05a374e771d4b401fa8881c.png

    a3326a17ffec64b038f7f283b8bb9510.png

    完成设置后我们可以在命令行下ping下域名或网络地址即可,或者我们再看下ip获取情况,我们看到获取到了一个正常的公网地址,然后也可以ping通百度网站,说明网络已经连接,恭喜可以正常上网了。

    6a60d1d4f8194c2d008ef3c3623eca9a.png

    展开全文
  • 复制用户名到剪贴板功能也会读取核心编码设置了,解决了线程误报问题,客户机连接到主机的情况下也可以进行拨号了, 据反映很多电信在很多学校的终端布置了协议分析系统。。共享会被检测,在西大路由器怎么用,ICS...
  • Android小应用之拨号

    2017-11-22 23:59:00
    首先看一下Android Studio下怎么设置应用的ICON Activity的onCreate()方法 当界面刚被创建时会回调此方法,super.onCreate()执行父类的初始化操作,必须要加上。 界面设计: 分析: TextView Edit...
  • Ubuntu安装好了,用的是8.04.1的版本,界面给我的感觉还不错,非常简洁清爽,Ubuntu的重要使命本来就是要将Linux的桌面应用发扬光大,可以说它将桌面应用提高到了足以取代Winduws的地步。  不过郁闷的事也随之而...
  • 打开拨号界面->输入 *#*#2846579#*#* 平板pad分两种->有手机拨号的>打开拨号界面->输入 *#*#2846579#*#* 平板pad分两种->无手机拨号的>打开原生自带计算器(切换至横屏模式)->输入 ()()...
  • 一般是192.168.1.1 以太网怎么连接其操作步骤详解 2、用一根网线连接路由器和电脑,电脑修改ip修改如图点击保存。 3、打开网页输入192.168.1.1 4、输入用户名和密码 一般的默认用户名和密码是admin 点击登陆进入...
  • 平常使用电脑的生活中,大家都知道,要是没有安装无线宽带的话是得用宽带连接拨号联网的,最近有个w8用户发现电脑上的宽带连接不见了来问小编w8如何设置宽带连接,于是小编整合了一篇关于win8系统怎么设置宽带连接...
  • 怎么查询华为手机版本号?

    千次阅读 2020-10-22 19:52:27
    我们知道,在对华为手机刷机前需要对...手机开机到语言选择界面→紧急拨号,然后在拨号界面输入 ##0000## 会弹出【关于手机】,在里面可以看到手机的型号及版本号。如下图所示 如上图所示为:P20Pro (内部代号CLT-
  • Android Studio不显示日志问题

    千次阅读 2018-10-12 16:16:39
    手机连上Android Studio后,有时无论怎么操作app,Android Studio上都没有日志输出...华为手机打开日志输出操作:打开拨号界面,输入*#*#2846579#*#*,会打开工程菜单界面。 在工程菜单界面,点击“后台设置”进...
  • 拦截骚扰电话

    2019-11-21 17:38:18
    手机变假空号/无法接通/已停机方法 ... 1、怎么把自己的手机号变为空号? 方法很简单,只要使用手机拨号,设置呼叫转移设置就可以了,并且这种设置是不用...无论是安卓还是iPhone手机,在拨号界面只要输入以下指令...
  • 华为荣耀6(华为h60-l01)在真机调试项目APP时,老是无法...1. 在拨号界面输入:*#*#2846579#*#* 进入测试菜单界面 2.Project Menu–后台设置–LOG设置 3.Log开关--》Log打开 即可 打开后重启手机。之后再重启E...
  • 今天我的小7怎么都不打LOG,然后...进入拨号界面输入:*#*#2846579#*#* 然后会进入工程菜单,选择后台设置--LOG设置---把里面的AP日志和CP日志都打上勾,AP日志是应用日志,CP是进程日志。然后就可以看到输出log了
  • 华为手机 开启log

    千次阅读 2016-04-05 13:51:04
    问题:现在用honor做测试机开发在,但是官方rom都是没有log输出的。听说为了搞快速启动给阉割了 ...答案 : 拨号界面输入*#*#2846579#*#*进入测试模式,点击pyojectmeu-点击第三个-后台设置-进入了之后-点击第2个-log设
  • 华为手机进工程模式指令大全

    万次阅读 2017-09-24 23:00:48
    手机工程模式,是一种系统层级的硬件安全管理程序。...华为手机怎么进入工程模式,这里分享的是几种通过拨号界面输入指令进入工程模式的方法,本方法在官方原厂固件上是可用的,但刷入的第三方ROM则不保证能进
  • 话不多说,肯定有很多小伙伴有和我一样的问题,那就是在集成Logger的时候,使用真机打印不出日志,我也是借鉴了很多的... 以华为P8为例:拨号界面输入 : *#*#2846579#*#* 依次选择ProjectMenu---后台设置----LOG设
  • Android去电监听

    千次阅读 2019-06-13 11:45:04
    当时就懵逼了,我怎么监听硬件上的点击事件,网上一查,GPIO是什么鬼,没办法网上各种翻找,什么设置输出、输入、高电平、低电平、IO口、索引值,慢慢弄明白了一些,可问题是不同的厂商提供的板子索引值什么的不同啊...
  • linux怎么不能上网?一番查找原来是件虚拟机时设置问题,问题解决了,本着共享原则整理一下资料如何使vmware虚拟机中的Linux操作系统能够上网? 第一种情况: 主机使用PPPOE拨号上网 方法一:NAT方式 1、先...
  •  ApWiFi 支持给热点加密,也可以设置免密码的开放网络,主界面简单明了,基本上一启动你就知道该怎么用了,毕竟所有的设置都在软件的界面上了。无线路由的名字和密码都可以自己设定。软件在启动后,Windows右下角的...
  • 8.再次登入管理界面,进入wlan设置,把SSID的名称设置好;同时“信道”也是要用手动选择一条不能用自动,这里我们选择“6”;其他不要改了。如果懂的话自己改吧! 9.打开http://192.168.1.1/wlsecurity.html 无线...
  • 路由器IP自动更换者可以定时更换路由器拨号IP,自动给路由器换IP。全自动软件实现,省去登录的痛苦 1. 设置路由器型号 一般都是会直接标在路由器的身上的,自己找下就行了;如果你看不懂,就找帮你买路由器的人...
  • 连续输入两次“9”,退出Hub的管理设置界面。 接下来该把本机的虚拟网卡连接到虚拟Hub1上了。打开SoftEther Connection Manager,你会看见里面已经有一个软件默认的SoftEther.com Sample Hub,这个虚拟的Hub位于...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    如题,非常好的界面设计实例,自绘控件的实现。 Mufan MP3播放的实现。 MYICQ 0.8 alpha1 (仿腾讯QQ整套聊天系统) 老版qq系统的实现。 MyIE3.0浏览器源代码 如题。完整的代码,重载控件实现,非常适合初学者。 ...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    如题,非常好的界面设计实例,自绘控件的实现。 Mufan MP3播放的实现。 MYICQ 0.8 alpha1 (仿腾讯QQ整套聊天系统) 老版qq系统的实现。 MyIE3.0浏览器源代码 如题。完整的代码,重载控件实现,非常适合初学者。 ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    如题,非常好的界面设计实例,自绘控件的实现。 Mufan MP3播放的实现。 MYICQ 0.8 alpha1 (仿腾讯QQ整套聊天系统) 老版qq系统的实现。 MyIE3.0浏览器源代码 如题。完整的代码,重载控件实现,非常适合初学者。 ...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    如题,非常好的界面设计实例,自绘控件的实现。 Mufan MP3播放的实现。 MYICQ 0.8 alpha1 (仿腾讯QQ整套聊天系统) 老版qq系统的实现。 MyIE3.0浏览器源代码 如题。完整的代码,重载控件实现,非常适合初学者。 ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

拨号界面怎么设置