LoongWind's Blog

龙行如风


  • 首页

  • 归档

  • Android

  • 标签

  • 关于

Centos安装nginx与简单配置

发表于 2015-05-23 | 分类于 其他 | 阅读次数:

Centos安装nginx记录如下:

为了追加 nginx 的 yum 仓库,需要创建一个文件 /etc/yum.repos.d/nginx.repo,并将下面的其中一个内容复制进去:

CentOS:

1
2
3
4
5
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

阅读全文 »

Android修改v4的SwipeRefreshLayout源码实现自定义下拉效果

发表于 2015-05-13 | 分类于 Android | 阅读次数:

现在app开发中使用下拉刷新的效果是很频繁的。网上也有各种第三方的实现方法,github上也有很多开源的项目。Google在v4包里也添加了一个下拉刷新的控件,就是SwipeRefreshLayout。SwipeRefreshLayout在5.0之前的v4包的效果是顶部有一个颜色条,5.0之后就是拉出一个悬浮的旋转的圈。说实话SwipeRefreshLayout这个控件很好用,用起来也很简单方便,但是下拉的效果不是我想要的,因为项目要求使用传统的下拉效果也就是下面这种效果:
下拉刷新
所以我就在想能不能修改SwipeRefreshLayout的源码来达到自己想要的效果呢?说做就做,从sdk卡的extras\android\support\v4\src\java\android\support\v4\widget目录下找到了SwipeRefreshLayout.java的源文件以及依赖的两个文件SwipeProgressBar.java、BakedBezierInterpolator.java。将这三个文件拷出来看是看源码并着手修改。花了一下午的时间终于实现了,先看一下效果:
下拉效果

阅读全文 »

Android手动添加gradle文件将项目导入进Android Studio

发表于 2015-03-27 | 分类于 Android | 阅读次数:

最近Android开发一直使用Android studio,整体还是很好用的,用起来比Eclipse顺手。但是使用过程中也遇到了很多问题特别是将Eclipse的项目导入到Android studio中遇到了很多问题,虽然Eclipse也支持gradle导出然后使用Android studio导入,但是用起来感觉不是很灵活。今天自己研究了一下gradle构建Android项目,实现了手动在项目里添加gradle文件轻松实现Android studio的导入。

关于gradle的相关资料我这里就不详细介绍了,网上有很多的资料(主要是我也不太懂~囧~),这里我就介绍一下具体的实现方法。

阅读全文 »

Android中Gson解析json数据使用@SerializedName注解与java对象不匹配的字段

发表于 2014-12-03 | 分类于 Android | 阅读次数:

在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。
Gson解析json的方法我这里就不详细说明了,网上一大把的例子,我这里主要说一下使用@SerializedName进行注解的情况。
使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面。然后我们经常会遇到我们自己定义的java对象里的属性名跟json里的字段名是不一样的,这种情况怎么办呢,这时我们就可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。

阅读全文 »

Android在代码里设置TextView随点击状态改变文字颜色

发表于 2014-09-27 | 分类于 Android | 阅读次数:

相信大家在开发中经常会用到按钮随点击状态改变背景、改变文字颜色的需求,TextView随点击状态改变文字颜色我们一般的做法是在res目录下新建color文件夹,然后在color文件下创建资源文件如下:

1
2
3
4
5
6
res/color/tv_color.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#123456"/>
<item android:state_pressed="false" android:color="#ff0000"/>
</selector>

在布局中使用:

1
2
3
4
5
6
<TextView 
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
android:textColor="@color/text_color"/>

阅读全文 »

Android监听应用程序从前台切换至后台运行

发表于 2014-08-27 | 分类于 Android | 阅读次数:

    android本身没有提供监听应用程序从前台切换到后台的api,所以我们只能自己想办法来实现。我想到的办法是写一个BaseActivity在onStop里判断当前系统前台运行的应用程序是否是我们自己的应用程序来实现监听应用程序被切换到后台。然后我们的应用所有Activity都继承BaseActivity。下面我们来看具体实现代码:

阅读全文 »

android圆形等分扇形菜单的实现

发表于 2014-08-21 | 分类于 Android | 阅读次数:

最近闲着没事写了一个圆形等分扇形菜单的功能,废话不多说先上图:

roundmenu

如图,实现了旋转功能、点击选中指定菜单等功能。

阅读全文 »

Android中使用Matrix实现图片的翻转

发表于 2014-07-08 | 分类于 Android | 阅读次数:

最近在研究pdf阅读的时候遇到了解析出图片出现翻转的情况于是研究了下,发现可以使用matrix实现图片的翻转。

不多说先直接上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
protected void onDraw(Canvas canvas) {
Drawable drawable = getDrawable();
if(drawable != null){
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
Matrix matrix = new Matrix();

//缩放 当sy为-1时向上翻转 当sx为-1时向左翻转 sx、sy都为-1时相当于旋转180°
matrix.postScale(1, -1);

//因为向上翻转了所以y要向下平移一个bitmap的高度
matrix.postTranslate(0 ,bitmap.getHeight());

canvas.drawBitmap(bitmap, matrix, null);
}
}

上面是继承ImageView重写了onDraw方法,主要是通过matrix的postScale实现,postScale为缩放,当sy为-1时向上翻转 当sx为-1时向左翻转, sx、sy都为-1时相当于旋转180°。如下图所示:

scale

阅读全文 »

Android开发在onResume中执行耗时操作导致从其他界面返回特别慢

发表于 2014-07-02 | 分类于 Android | 阅读次数:

今天改别人的一个bug时遇见一个问题,发现某个界面点击返回以后特别慢,得等一会儿才能返回到上一个界面。

当时第一反应可能是在点击返回的时候或者是在Activity的onDestroy里面做了很多耗时的操作导致点击返回的时候出现特别慢的问题,但是仔细查看了一下代码发现在返回按钮的监听或者是设备返回键的监听都没有做什么操作,onDestroy里同样没做什么操作,这就奇怪了问题到底出在哪里呢?

经过一番查找调试分析,觉得问题可能不是出在当前界面,将视线转到要返回的上一个界面,发现重写了onResume方法,可能是这个方法执行了耗时的操作导致的,打印了一下这个方法的耗时时间发现耗时也不是很高啊还不到10ms,难道问题的关键不是在这里?

阅读全文 »

Android显示圆形图片的方法

发表于 2014-06-28 | 分类于 Android | 阅读次数:

相信大家在Android应用开发的时候经常会遇到需要使用圆形图片的时候,如果是我们程序中的图片还好说可以让我们的美工MM直接给我们做一个圆形的图片就搞定了。可是如果是从服务器上获取的或者是用户上传的呢我们该怎么办呢,比如用户的头像等。接下来我们就来看看在Android中怎样显示一个圆形的图片。

第一种方法:直接上代码

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
public static Bitmap getRoundBitmap(Bitmap bitmap) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
//获得圆的直径
int d = Math.min(width, height);

Bitmap output = Bitmap.createBitmap(width,height, Config.ARGB_8888);
Canvas canvas = new Canvas(output);

//这里颜色随便填只要保证是不透明的就行也就是前两位是ff
int color = 0xff424242;
Paint paint = new Paint();
paint.setColor(color);
//设置抗锯齿
paint.setAntiAlias(true);

canvas.drawARGB(0, 0, 0, 0);
//先绘制一个圆
canvas.drawCircle(width/2, height/2, d/2, paint);

//设置两张图片相交的模式
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

canvas.drawBitmap(bitmap, 0, 0, paint);

return output;
}

主要代码就是通过canvas画一个圆,圆的直径就是图片的宽高最小的那一边,然后设置图片相交的模式,再将bitmap画上去取两张图片相交的部分就得到我们想要的圆了。最关键的代码就是 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN))这一句,设置两张图片的叠加模式,具体有哪些模式呢,用一张图来表示:

阅读全文 »
1234

LoongWind

龙行如风的个人博客

31 日志
2 分类
59 标签
© 2018 LoongWind
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4
| 浙ICP备18011288号