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

湖州网站开发郑州粒米seo顾问

湖州网站开发,郑州粒米seo顾问,靠比较好的软件网站,昆山商城网站建设ro.wallpaper.fixsize这个节点应该是RK这边导入的,可以通过追这个节点的代码查看具体的实现方式; 最近在开7.0的坑,遇到了一些小问题,记录一下。很大可能这个问题只是我这个芯片的代码上才存在的,不过殊途同归啦。 第…

ro.wallpaper.fixsize这个节点应该是RK这边导入的,可以通过追这个节点的代码查看具体的实现方式;

最近在开7.0的坑,遇到了一些小问题,记录一下。很大可能这个问题只是我这个芯片的代码上才存在的,不过殊途同归啦。
第一个问题就是,我们增加内置可选壁纸,选择这些壁纸后进行设置,会发现拉伸很明显。通过增加打印log发现

 diff --git a/src/com/android/wallpaperpicker/WallpaperCropActivity.java b/src/com/android/wallpaperpicker/WallpaperCropActivity.java
old mode 100644
new mode 100755
index bdb601b..67d1551
--- a/src/com/android/wallpaperpicker/WallpaperCropActivity.java
+++ b/src/com/android/wallpaperpicker/WallpaperCropActivity.java
@@ -337,15 +337,22 @@ public class WallpaperCropActivity extends Activity implements Handler.CallbackPoint inSize = mCropView.getSourceDimensions();Point outSize = WallpaperUtils.getDefaultWallpaperSize(getResources(),getWindowManager());
+               android.util.Log.d(LOGTAG,"inSize.x = " + inSize.x + " inSize.y = " + inSize.y
+                       + " outSize.x = " + outSize.x + " outSize.y = " + outSize.y);RectF crop = Utils.getMaxCropRect(inSize.x, inSize.y, outSize.x, outSize.y, false);// Passing 0, 0 will cause launcher to revert to using the// default wallpaper sizeCropAndFinishHandler onEndCrop = new CropAndFinishHandler(new Point(0, 0),shouldFadeOutOnFinish);CropAndSetWallpaperTask cropTask = new CropAndSetWallpaperTask(streamProvider, this, crop, streamProvider.getRotationFromExif(this),outSize.x, outSize.y, onEndCrop);DialogUtils.executeCropTaskAfterPrompt(this, cropTask, getOnDialogCancelListener());}



我们的壁纸尺寸是1024*600,log打印的inSize都是正确的,但是outSize却变成了1200*1024了,由此产生了壁纸设置后有拉伸的情况。


因此问题就是出在这个Size的变化上,我们继续跟踪源码,会发现

diff --git a/src/com/android/wallpaperpicker/WallpaperUtils.java b/src/com/android/wallpaperpicker/WallpaperUtils.java
old mode 100644
new mode 100755
index 1532190..a4d88d7
--- a/src/com/android/wallpaperpicker/WallpaperUtils.java
+++ b/src/com/android/wallpaperpicker/WallpaperUtils.java
@@ -137,7 +137,7 @@ public final class WallpaperUtils {// We need to ensure that there is enough extra space in the wallpaper// for the intended parallax effects
-            final int defaultWidth, defaultHeight;
+            int defaultWidth, defaultHeight;if (res.getConfiguration().smallestScreenWidthDp >= 720) {defaultWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));defaultHeight = maxDim;
@@ -145,6 +145,11 @@ public final class WallpaperUtils {defaultWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim);defaultHeight = maxDim;}
+                       android.util.Log.d("WallpaperCropActivity"," res.getConfiguration().smallestScreenWidthDp = "
+                       + res.getConfiguration().smallestScreenWidthDp + " defaultWidth = " + defaultWidth
+                               + " minDim =" + minDim + " maxDim =" + maxDim);
+            defaultWidth = maxDim;
+            defaultHeight = minDim;sDefaultWallpaperSize = new Point(defaultWidth, defaultHeight);}return sDefaultWallpaperSize;


问题的根源就是这个defaultWidth和defaultHeight啦。继续打印log发现maxDim和minDim就是我们正确的壁纸尺寸,这两个变量都是final的更改下修饰符,同时将最终设置的尺寸更改为正确的,辣么设置的壁纸的拉伸问题就暂时解决了。

第二个问题,就是设置sd卡中的图片作为壁纸,这个东西源码分析的过程比较复杂。可以通过dumpsys wallpaper以及dumpsys SurfaceFlinger来查看图片的设置尺寸。更改的地方涉及三处。分别是launcher3、framework/base/core以及SystemUI。

packages/apps/Launcher3
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index 38545e2..ecd3ad6 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -177,7 +177,7 @@ public class InvariantDeviceProfile {(int) (largeSide * wallpaperTravelToScreenWidthRatio(largeSide, smallSide)),largeSide);} else {
-            defaultWallpaperSize = new Point(Math.max(smallSide * 2, largeSide), largeSide);
+            defaultWallpaperSize = new Point(largeSide, largeSide);}}frameworks/base
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -55,6 +55,7 @@ import android.os.SystemProperties;import android.os.UserHandle;import android.text.TextUtils;import android.util.Log;
+import android.view.WindowManager;import android.view.WindowManagerGlobal;import libcore.io.IoUtils;
@@ -310,7 +311,7 @@ public class WallpaperManager {mCachedWallpaper = null;mCachedWallpaperUserId = 0;try {
-                    mCachedWallpaper = getCurrentWallpaperLocked(userId);
+                    mCachedWallpaper = getCurrentWallpaperLocked(context,userId);mCachedWallpaperUserId = userId;} catch (OutOfMemoryError e) {Log.w(TAG, "No memory load current wallpaper", e);
@@ -342,7 +343,7 @@ public class WallpaperManager {}}-        private Bitmap getCurrentWallpaperLocked(int userId) {
+        private Bitmap getCurrentWallpaperLocked(Context context,int userId) {if (mService == null) {Log.w(TAG, "WallpaperService not running");return null;
@@ -354,7 +355,15 @@ public class WallpaperManager {params, userId);if (fd != null) {try {
+                       WindowManager mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
+                       int wW = mWindowManager.getDefaultDisplay().getWidth();
+                       int wH = mWindowManager.getDefaultDisplay().getHeight();BitmapFactory.Options options = new BitmapFactory.Options();
+                       options.inJustDecodeBounds = true;
+                       BitmapFactory.decodeFileDescriptor(
+                               fd.getFileDescriptor(), null, options);
+                       options.inSampleSize = calculateInSampleSize(options, wW,wH);
+                       options.inJustDecodeBounds = false;return BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor(), null, options);} catch (OutOfMemoryError e) {
@@ -369,11 +378,30 @@ public class WallpaperManager {return null;}+        private int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight){
+                  int width = options.outWidth;
+                  int height = options.outHeight;
+                  int inSampleSize = 1;
+                  if (width > reqWidth && height > reqHeight){
+                int widthRatio = Math.round((float) width / (float) reqWidth);
+                int heightRatio = Math.round((float) width / (float) reqWidth);
+                inSampleSize = Math.max(widthRatio, heightRatio);
+                  }
+                  return inSampleSize;
+        }
+private Bitmap getDefaultWallpaper(Context context, @SetWallpaperFlags int which) {
+            WindowManager mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
+            int wW = mWindowManager.getDefaultDisplay().getWidth();
+            int wH = mWindowManager.getDefaultDisplay().getHeight();InputStream is = openDefaultWallpaper(context, which);if (is != null) {try {BitmapFactory.Options options = new BitmapFactory.Options();
+                    options.inJustDecodeBounds = true;
+                    BitmapFactory.decodeStream(is, null, options);
+                    options.inSampleSize = calculateInSampleSize(options, wW,wH);
+                    options.inJustDecodeBounds = false;return BitmapFactory.decodeStream(is, null, options);} catch (OutOfMemoryError e) {Log.w(TAG, "Can't decode stream", e);diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index c88931d..fecc47e 100755
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -229,14 +229,15 @@ public class ImageWallpaper extends WallpaperService {surfaceHeight = Math.max(displayInfo.logicalHeight, mBackgroundHeight);}-            if (FIXED_SIZED_SURFACE) {
+           //Log.d(TAG,"----surfaceWidth = "+surfaceWidth+" surfaceHeight= "+surfaceHeight);
+            /*if (FIXED_SIZED_SURFACE) {// Used a fixed size surface, because we are special.  We can do// this because we know the current design of window animations doesn't// cause this to break.surfaceHolder.setFixedSize(surfaceWidth, surfaceHeight);mLastRequestedWidth = surfaceWidth;mLastRequestedHeight = surfaceHeight;
-            } else {
+            } else*/ {surfaceHolder.setSizeFromLayout();}return hasWallpaper;
http://www.zhongyajixie.com/news/26849.html

相关文章:

  • 郑州做网站公司汉狮价格windows优化大师免费
  • 有没有做策划案例的网站sem优化师
  • SEO与网站建设创意杭州网站建设网页制作
  • 网页设计与网站建设试题怎么让网站被百度收录
  • 青岛开发区网站建设哪家好北京网络营销推广公司
  • 上海比较好的网站制作公司seo的英文全称是什么
  • 邮件订阅 wordpressseo站群优化
  • 网站seo免费奖励自己的网站
  • 写网站教程关键词排名优化
  • 临夏州建设局网站石家庄网站建设
  • 网站怎么防止黑客攻击别人恶意点击我们竞价网站
  • 做网站素材图片深圳sem竞价托管
  • 中国互联网网站性能刘连康seo培训哪家强
  • 2016企业网站建设方案宁波网站建设网站排名优化
  • 云南网络推广公司排名谷歌seo优化怎么做
  • 可信赖的做网站做网络推广的团队
  • 海南省人民政府网站包就业的培训学校
  • 主机服务器网站 怎么做引擎seo优
  • 深圳h5网站建设餐饮营销策划方案
  • php做网站的好处百度网站首页提交入口
  • 淘宝网站建设模板免费下载郑州seo价格
  • 做电音的软件的专业下载网站杭州seo薪资水平
  • 电脑打不开网页怎么回事seo网站关键词优化怎么做
  • 电影制作专业厦门站长优化工具
  • 东莞网站优化一般多少钱学开网店哪个培训机构好正规
  • 做网站需要用什么系统seo是什么软件
  • 网站要怎么做关键词强强seo博客
  • 企业文化理念口号windows优化大师可靠吗
  • 重庆就业网seo搜索引擎优化实训
  • 高中信息技术网站设计规划软文营销代理