用户登录
用户注册

分享至

安卓桌面滚动字体软件下载 安卓系统桌面循环滚动桌面设置的

  • 作者: 哈根达威尔-史密斯
  • 来源: 51数据库
  • 2020-04-21

1、手机设置”的“辅助功能”中有选择是否“桌面循环”。

2、在原生的android源码上添加这一功能。

思路:先把界面做出来,再将是否选择的值存到系统的(adb shell进入)data/data/com.android.providers.settings/databases/settings.db数据库中的system表中,

  然后在Launch2的源码中取得数据库中是否选择循环桌面来执行相关代码。

  先做UI:

  在settings源码中的accessibility_settings.xml文件中添加一个checkbox:

  java代码

  android:key="launch_repeat"

  android:title="@string/launch_repeat_title"

  android:persistent="false"/>

  在settings源码的res中添加相关的代码:

  在values/string.xml中添加(英文显示):

  Launch Repeat

  在values-zh-rCN/string.xml中添加(中文显示):

  "循环桌面"

  在settings源码的AccessibilitySettings.java中的OnCreate中添加:

  java代码

/*****************************************/

  mLaunchRepeat=(CheckBoxPreference) findPreference(

  LAUNCH_REPEAT);

  int LaunchRepeat=Settings.System.getInt(this.getContentResolver(),

  "launch_repeat",0);//取出是否被选择

  if(LaunchRepeat==1)//如果被选择,那么下次打开setting时就勾选

  mLaunchRepeat.setChecked(true);

  else

  mLaunchRepeat.setChecked(false);//如果没被选择,那么下次打开setting时就不勾选

  /*****************************************/

  当然还要定义几个量:

  private final String LAUNCH_REPEAT =

  "launch_repeat";

  private CheckBoxPreference mLaunchRepeat;

  在onPreferenceTreeClick函数中添加:

  java代码

//add by xxnan

  if(LAUNCH_REPEAT.equals(key))

  {

  Settings.System.putInt(getContentResolver(),

  "launch_repeat",

  ((CheckBoxPreference) preference).isChecked()?

1:0);//将是否选择存到系统的system表中

  }

  //add by xxnan

  如果做好了之后当点击选择“桌面循环时”可以到(adb shell进入)data/data/com.android.providers.settings/databases下的settings.db数据库(sqlite3 settings.db)的system

  表中看到33|launch_repeat|1(select * from system;)。

  到这里就完成了将数据存到系统system表中以及UI,接下来就是在Launch2源码中去取这个值(是否循环)。

  到Launcher2源码中去找到Workspace.java文件,在里面有相应的修改:

  在onTouchEvent中,之前有修改循环,如下:

  java代码

case MotionEvent.ACTION_UP:

  if (mTouchState == TOUCH_STATE_SCROLLING) {

  final VelocityTracker velocityTracker = mVelocityTracker;

  velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);

  final int velocityX = (int)

velocityTracker.getXVelocity(mActivePointerId);

  final int screenWidth = getWidth();

  final int whichScreen = (mScrollX + (screenWidth / 2)) / screenWidth;

  final float scrolledPos = (float) mScrollX / screenWidth;

  Log.i("velocityX","velocityX="+velocityX+"whichScreen="+whichScreen);

  /***********************************************/

  //modifided by xxnan

  if (velocityX > SNAP_VELOCITY) {

  // Fling hard enough to move left.

  // Don't fling across more than one screen at a time.

  Log.i("numscreen","numscreen="+mCurrentScreen);

  /* final int bound = scrolledPos < whichScreen ?

  ( (mCurrentScreen+ getChildCount()) - 1 )% getChildCount():

mCurrentScreen;*/

  final int bound =( (mCurrentScreen+ getChildCount()) - 1 )% getChildCount()

;

  Log.i("numscreen","bound="+bound);

  snapToScreen( bound, velocityX, true);

  } else if (velocityX < -SNAP_VELOCITY ) {

  // Fling hard enough to move right

  // Don't fling across more than one screen at a time.

  /*final int bound = scrolledPos > whichScreen ?

  ( mCurrentScreen + 1 )% getChildCount(): mCurrentScreen;*/

  final int bound = ( mCurrentScreen + 1 )% getChildCount() ;

  snapToScreen(bound, velocityX, true);

  } else {

  snapToScreen(whichScreen, 0, true);

  }

  /***********************************************/

  //下面是原生代码

  /*if (velocityX > SNAP_VELOCITY && mCurrentScreen > 0) {

  // Fling hard enough to move left.

  // Don't fling across more than one screen at a time.

  final int bound = scrolledPos < whichScreen ?

  mCurrentScreen - 1 : mCurrentScreen;

  snapToScreen(Math.min(whichScreen, bound), velocityX, true);

  } else if (velocityX < -SNAP_VELOCITY && mCurrentScreen <

getChildCount() - 1) {

  // Fling hard enough to move right

  // Don't fling across more than one screen at a time.

  final int bound = scrolledPos > whichScreen ?

  mCurrentScreen + 1 : mCurrentScreen;

  snapToScreen(Math.max(whichScreen, bound), velocityX, true);

  } else {

  snapToScreen(whichScreen, 0, true);

  }*/

  }

  mTouchState = TOUCH_STATE_REST;

  mActivePointerId = INVALID_POINTER;

  releaseVelocityTracker();

  break;

  那么就要在修改的地方加一个判断,如果system中取得的值是1,就可以循环,如果是0,就不能。

  代码修改如下:

  java代码

case MotionEvent.ACTION_UP:

  if (mTouchState == TOUCH_STATE_SCROLLING) {

  final VelocityTracker velocityTracker = mVelocityTracker;

  velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);

  final int velocityX = (int)

velocityTracker.getXVelocity(mActivePointerId);

  final int screenWidth = getWidth();

  final int whichScreen = (mScrollX + (screenWidth / 2)) / screenWidth;

  final float scrolledPos = (float) mScrollX / screenWidth;

  Log.i("velocityX","velocityX="+velocityX+"whichScreen="+whichScreen);

  /***********************************************/

  //modifided by xxnan 2013-1-9

  launch_repeat=Settings.System.getInt(mContext.getContentResolver(),

  "launch_repeat",0);//取出system表中“launch_repeat”的值

  Log.i(" launch_repeat"," launch_repeat="+ launch_repeat);

  if(launch_repeat==1)//如果是1,就循环,也就是之前已经改好的

  {

  if (velocityX > SNAP_VELOCITY) {

  // Fling hard enough to move left.

  // Don't fling across more than one screen at a time.

  Log.i("numscreen","numscreen="+mCurrentScreen);

  /* final int bound = scrolledPos < whichScreen ?

  ( (mCurrentScreen+ getChildCount()) - 1 )% getChildCount():

mCurrentScreen;*/

  final int bound =( (mCurrentScreen+ getChildCount()) - 1 )% getChildCount()

;

  Log.i("numscreen","bound="+bound);

  snapToScreen( bound, velocityX, true);

  } else if (velocityX < -SNAP_VELOCITY ) {

  // Fling hard enough to move right

  // Don't fling across more than one screen at a time.

  /*final int bound = scrolledPos > whichScreen ?

  ( mCurrentScreen + 1 )% getChildCount(): mCurrentScreen;*/

  final int bound = ( mCurrentScreen + 1 )% getChildCount() ;

  snapToScreen(bound, velocityX, true);

  } else {

  snapToScreen(whichScreen, 0, true);

  }

  }

  else//如果是0,那么就是原生代码,不循环

  {

  if (velocityX > SNAP_VELOCITY && mCurrentScreen > 0) {

  // Fling hard enough to move left.

  // Don't fling across more than one screen at a time.

  final int bound = scrolledPos < whichScreen ?

  mCurrentScreen - 1 : mCurrentScreen;

  snapToScreen(Math.min(whichScreen, bound), velocityX, true);

  } else if (velocityX < -SNAP_VELOCITY && mCurrentScreen <

getChildCount() - 1) {

  // Fling hard enough to move right

  // Don't fling across more than one screen at a time.

  final int bound = scrolledPos > whichScreen ?

  mCurrentScreen + 1 : mCurrentScreen;

  snapToScreen(Math.max(whichScreen, bound), velocityX, true);

  } else {

  snapToScreen(whichScreen, 0, true);

  }

  }

  /***********************************************/

  //下面是原生代码

  /*if (velocityX > SNAP_VELOCITY && mCurrentScreen > 0) {

  // Fling hard enough to move left.

  // Don't fling across more than one screen at a time.

  final int bound = scrolledPos < whichScreen ?

  mCurrentScreen - 1 : mCurrentScreen;

  snapToScreen(Math.min(whichScreen, bound), velocityX, true);

  } else if (velocityX < -SNAP_VELOCITY && mCurrentScreen <

getChildCount() - 1) {

  // Fling hard enough to move right

  // Don't fling across more than one screen at a time.

  final int bound = scrolledPos > whichScreen ?

  mCurrentScreen + 1 : mCurrentScreen;

  snapToScreen(Math.max(whichScreen, bound), velocityX, true);

  } else {

  snapToScreen(whichScreen, 0, true);

  }*/

  }

  mTouchState = TOUCH_STATE_REST;

  mActivePointerId = INVALID_POINTER;

  releaseVelocityTracker();

  break;

  当然这里面也要定义几个量,以及导入几个包:

  导入包:

  //add by xxnan

  import android.content.ContentResolver;//从system表中取数据

  import android.provider.Settings;

  定义变量:

  private int launch_repeat;//取得是否循环的值

  到这里就全部修改好了,还有就是编译一下源码中的package/apps的Launch2和Settings的源码,将生成的out/target/。。。/system/app下的

  Launch2.apk和Settings.apk替换手机里system/app的这两个apk就可以了。

安卓手机桌面文字提醒怎样实现呀?

怕你找不到 给你下载好了哦

这是小米原生的便签软件,很精致的。

用别的话,没这个好看。

下面是软件

http://pan.baidu.com/share/link?shareid=284003&uk=3473306320

请问手机全屏滚动文字软件是什么啊?

手机软件商城搜索LED大屏幕。下载完成就可以自定义设置各种你喜欢的滚动文字了。希望能帮到你谢谢!

手机怎么弄 滚动字体

这是个软件 搜 LED ,就可以了。好评。

求好评

安卓手机桌面怎么添加文字??有软件么?

SimpleNote 这个软件可以试试

有一个安卓软件叫AIDE,可以编写安卓应用代码并生成apk文件,但我不会用,求加载一张图片和绘制文字

软件自带三个范例,第一个就是你所需要的,第二个是俄罗斯方块,第三个是桌面时钟。显示文字和图片简单的就是在Layout中的main添加textview和imageview控件具体看范例,我就是通过这个软件了解安卓开发的

请问怎么把安卓手机的桌面图标变小?

Holo启动器增强版[安智汉化]

主要功能:

- 完全的ICS风格:ICS图标、文件夹、布局、应用抽屉、标签等

- 自定义主屏幕页数/网格:最多支持9页主屏幕和10x10的网格

- 自定义应用抽屉竖屏/横屏网格:分别为竖屏和横屏设置不同的抽屉网格

- 可滚动的托盘:最多支持3页托盘,每页最多支持7个图标,并支持横向分页和纵向连续样式

- 循环滚动:无限滚动您的桌面、应用抽屉、托盘

- 主屏幕手势:在主屏幕上向上/向下滑动快速启动应用

- 自定义快捷方式/文件夹图标:长按编辑快捷方式/文件夹图标和标签,支持ADW和LauncherPro图标包

- 屏幕预览:双指捏操作显示屏幕预览

- 备份和恢复:备份和恢复您的设置和快捷方式

- 其他自定义选项:常驻内存、HOME键操作、隐藏抽屉中的应用、隐藏图标文本等

下载安装使用吧

转载请注明出处51数据库 » 安卓桌面滚动字体软件下载 安卓系统桌面循环滚动桌面设置的

软件
前端设计
程序设计
Java相关