Xinspace


  • 首页

  • 归档

  • 搜索

几个开源UI框架

发表于 2016-04-13 | 分类于 Android

参考:几个开源UI框架

先记录一下,正在研究Pull-to-Refresh.Rentals-Android这个框架,用的比较多。

在onCreate中获取View的高宽

发表于 2016-04-11 | 分类于 Android

============================
原创,转载请指明出处。

在Activity/Fragment的onCreate/onCreateView方法中如果试图获取view的宽和高,如使用getMeasuredWidth与getMeasuredHeight方法,会返回0。
众所周知,view显示在屏幕上会经过三个阶段:测量、布局和绘制。其中测量阶段确定整个布局中每个view(包括外层的ViewGroup和内层的子view)的高和宽。布局阶段确定子view在父view的哪个地方(子view的layout_xxx属性就发生作用),布局阶段发生之前,就已经知道了每个view的大小了。绘制阶段则通知子view绘制自己(父view如果不设置背景色的话,就不会发生绘制),绘制阶段之前就已经知道具体的位置了。

阅读全文 »

自定义Hexo博客的文章、草稿和页面的模板

发表于 2016-04-11 | 分类于 Others

=============================
原创,如需转载,请指明出处

使用Hexo搭建博客比较方便,在创建新的文章(post)、草稿(draft)或者页面(page)时,hexo会使用默认的模板。默认模板可能不太符合我们自己的习惯,因此需要自定义。

打开hexo的安装目录,目录树为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
hexo-install-directory
├── CNAME
├── _config.yml //Hexo的配置文件,可以配置主题、语言等
├── avatar.jpg
├── db.json
├── debug.log
├── node_modules
│   ├── hexo
│   ├── hexo-deployer-git
│   ├── hexo-generator-archive
│   ├── hexo-generator-category
│   ├── hexo-generator-feed
│   ├── hexo-generator-index
│   ├── hexo-generator-sitemap
│   ├── hexo-generator-tag
│   ├── hexo-migrator-wordpress
│   ├── hexo-renderer-ejs
│   ├── hexo-renderer-marked
│   ├── hexo-renderer-stylus
│   └── hexo-server
├── package.json
├── public //执行hexo g命令后,生成的内容会在这里,包括所有的文章、页面、分类、tag等.
│   ├── 2013
│   ├── 2014
│   ├── 2015
│   ├── 2016
│   ├── 404.html
│   ├── Staticfile
│   ├── archives
│   ├── atom.xml
│   ├── categories
│   ├── css
│   ├── images
│   ├── index.html
│   ├── js
│   ├── page
│   ├── sitemap.xml
│   └── vendors
├── scaffolds //保存着默认模板,自定义模板就是修改该目录下的文件
│   ├── draft.md //默认的草稿模板
│   ├── page.md //默认的页面模板
│   └── post.md //默认的文章模板
├── source //Hexo存放编辑页面的地方,可以使用vim或其他编辑器编辑这里的内容
│   ├── 404.html //自定义404页面,可以使用腾讯公益404页面
│   ├── Staticfile
│   ├── _drafts //存放所有的草稿文件的目录
│   ├── _posts //存放所有的文章文件的目录,用的最多,比如执行hexo n "post_name"之后,post_name这篇文章就存放在这个目录下
│   ├── categories
│   └── images //这是我自己定义的,用于存放个人的avatar
└── themes //Hexo的所有主题
├── landscape
├── next //这是我目前用的主题
└── yilia

如上所述,如果要自定义文章模板,则直接用编辑器打开hexo-install-directory/scaffolds/post.md这个文件,然后自己编写需要的模板信息,保存即可。下次再执行hexo n "page_name"命令时,Hexo就会使用这个模板来新建文章了。

Markdown语法快速索引

发表于 2016-04-11 | 分类于 Others

Markdown语法适合快速编写博客,比HTML还简单,在编辑博客的时候,添加链接、图片、代码段和引用链接等不用再去编辑框点各种按钮,直接输入相关的语法即可。
这里列出两个网址,适合Markdown语法入门。

1.快速索引
2.简书-Markdown语法入门

如何引用StackOverflow上的某个特定回答

发表于 2016-04-11 | 分类于 Others

参考:StackExchange

在每个回答的下面靠左边,有两个按钮,share和edit,点击share,复制弹框中的网址即可,如下图:

设置图片为手机背景

发表于 2016-04-11 | 分类于 Android

参考:
1.stackoverflow
2.Android Technology Blog

#简单的方法

主要的方法是:

1
2
3
4
5
6
7
8
WallpaperManager myWallpaperManager 
= WallpaperManager.getInstance(getApplicationContext());
try {
myWallpaperManager.setResource(R.drawable.five);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

其中WallpaperManager还有其他的设置壁纸的方法,如setBitmap等,可以去官网)了解一下。

#设置合适的参数

如果图片比较高清,那么壁纸很可能显示不完全,或者很模糊。要想把整张图片完全的作为壁纸显示,其实只要简单几步即可,如下:
1.在AndroidManifest文件中添加如下的权限:

1
2
3
4
<!-- 设置壁纸的权限 -->
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<!-- 设置壁纸参数的权限 -->
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>

2.设置壁纸的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* 把bitmap设置为壁纸
* @param context 上下文
* @param bitmap 要设置为壁纸的bitmap
* */
public void setWallpaper(Context context, Bitmap bitmap) {
WallpaperManager manager = WallpaperManager.getInstance(context);

int desiredWidth = context.getWindowManager().getDefaultDisplay().getWidth();
int desiredHeight = context.getWindowManager().getDefaultDisplay().getHeight();
Bitmap sb = scaleBitmap(bitmap, desiredWidth, desiredHeight);

int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
int screenHeight = context.getResources().getDisplayMetrics().heightPixels;
manager.suggestDesiredDimensions(screenWidth, screenHeight);

manager.setBitmap(sb);
}

/**
* 裁剪bitmap
* @param b 原始图片
* @param w 目标宽
* @param h 目标高
* @return 裁剪后的bitmap
* */
private Bitmap scaleBitmap(Bitmap b, int w, int h) {
int width = b.getWidth();
int height = b.getHeight();

float scaleWidth = ((float) w) / width;
float scaleHeight = ((float) h) / height;

Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);//缩放

return Bitmap.createBitmap(b, 0, 0, width, height, matrix, true);
}

2.1 根据屏幕的宽和高裁剪原始的bitmap:

1
2
3
int desiredWidth = context.getWindowManager().getDefaultDisplay().getWidth();
int desiredHeight = context.getWindowManager().getDefaultDisplay().getHeight();
Bitmap sb = scaleBitmap(bitmap, desiredWidth, desiredHeight);

2.2 为WallpaperManager设置合适的宽和高:

1
2
3
int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
int screenHeight = context.getResources().getDisplayMetrics().heightPixels;
manager.suggestDesiredDimensions(screenWidth, screenHeight);

Dialog 移除掉内容框上面的标题栏

发表于 2016-04-11 | 分类于 Android

参考:stackoverflow

使用Android的Dialog时,默认会有标题栏和内容框。取消标题栏也比较简单:

1
2
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

这其实是与Activity去掉顶部标题栏的操作是一样的,这里要注意的是,去掉标题栏的操作要在setContentView之前调用。

Android drawable转换成bitmap

发表于 2016-04-11 | 分类于 Android

参考:stackoverflow

用于把Drawable转换成Bitmap,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static Bitmap drawableToBitmap (Drawable drawable) {
Bitmap bitmap = null;

if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
if(bitmapDrawable.getBitmap() != null) {
return bitmapDrawable.getBitmap();
}
}

if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel
} else {
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
}

Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}

Android Studio 出现'ResourceType'警告

发表于 2016-04-11 | 分类于 Android

参考stack overflow

在Android Studio中编写如下语句时遇到了问题:

1
TypedArray ta = obtainStyledAttributes(R.style.MyCustomStyle, attrs);

AS的错误提示是Excepted resource of type styleable。即要求obtainStyledAttributes方法的第一个参数必须是R.styleable.xxx中已定义的ID,如果传的这个int值没有被AS识别为style类型,那么就会出这个错误。
在我们已知参数是正确的情况下,解决这个警告提示的方法就是加suppress。即在这条语句或包含这条语句的方法上加“@SuppressWarnings(“ResourceType”)”即可。

解决Android Studio HTTP网络代理错误提示

发表于 2016-04-01 | 分类于 Android

Android Studio的Preference->System Settings->HTTP Proxy设置的时候,上面有错误提示:You have JVM property “socksProxyHost” set to “127.0.0.1”.

阅读全文 »

1…456…17

Xinspace

Personal blog from xin.

170 日志
6 分类
1 标签
© 2019 Xinspace
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4