自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (4)
  • 收藏
  • 关注

原创 仿微信朋友圈发表图片拖拽和删除功能

仿微信朋友圈发表图片拖拽和删除功能,使用ItemTouchHelper实现拖拽和删除功能,并解决图片OOM,从分析到实现代码。

2017-07-13 14:58:06 18123 23

原创 Mac安装android studio后卡在building gradle project info的解决方法

1.找到.gradle目录,一般在/User/<用户名>/下; macOS Sierra 10.12.3可以直接快捷键 shift+command+. 显示隐藏的文件即可看到.gradle文件夹。2.进入.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9文件夹下,删除.part文件3.去gradle网站:https://

2017-06-14 10:12:58 8671 4

原创 扫盲Android Studio 仓库jCenter并发布自己的开源库

AS从哪里获取到开源库首先我们在使用第三方开源库时,直接在项目的 gradle 文件中添加这样一行代码: compile 'com.jakewharton:butterknife:7.0.1' 添加完之后,你会发现依懒库中确实出现了这个库文件,那么 AS 具体是去哪里下载这个库的呢?jcenter细心的话会发现项目根目录的 gradle 文件里面有这样的配置allprojects { r

2017-04-14 17:11:52 12732 3

原创 Tinker接入小白教程

在这里先给大家拜个晚年,虽然说新已经过了。本文是今天第一篇文章,已经有好长时间没总结了,算了给2017开个好头吧。之前一直搞不懂什么是热修复?其实热修复就是在应用不用重新安装的情况下更新应用。最多的应用场景就是用来修复bug。因为重新发包的代价太大了,所以我们可以选择用热修复来修复bug!需要注意的一点是Tinker在1.7.6版本以及之后的版本不支持加固后的动态更新,所以用了这个就不用用其他厂商

2017-02-07 18:19:51 5662 8

原创 material design效果Dialog并修改颜色

1,引用包compile 'com.android.support:appcompat-v7:23.4.0'2,调用V7包下的AlertDialognew AlertDialog.Builder(MainActivity.this).setTitle("单选框").setSingleChoiceItems( new String[]{"I

2016-10-27 17:43:36 7652

原创 TabLayout多种使用方式

一、使用方式(1)、导入兼容包compile 'com.android.support:design:23.4.0'(2)新建Activity,自定义Fragment,资源文件public class TabLayoutActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListene

2016-10-11 18:11:44 3854

原创 极光推送-点击通知栏跳到指定页面

在MyReceiver接收器里面,添加以下代码:if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { Log.d(TAG, "[MyReceiver] 用户点击打开了通知"); //打开自定义的Activity

2016-10-11 10:12:32 24471 6

原创 RecyclerView另类实现高度固定

1、设置好宽高度android:layout_width="match_parent"android:layout_height="124dp"2、在代码中设置RecyclerView不可滑动rcv.setNestedScrollingEnabled(false);3、使用最新版本的RecyclerView是可以解决自适就高度的

2016-07-26 09:22:17 7089

原创 mac终端打开.sh文件无反应

解决方法:修改文件的权限:chmod 777 xxx.sh

2018-12-24 10:57:22 3997 1

原创 mac ssh记住密码

以下方法只针对已生成ssh密码的情况1、cd ~/.ssh2、cp id_rsa.pub authorized_keys3、有无默认端口号:(1)默认端口号为22:ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip(2)指定端口号为2212:ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2212 user@ip4、输入密码即可...

2018-12-24 10:47:37 3844

原创 使用ItemTouchHelper拖拽时两个item跟着动解决方法

使用ItemTouchHelper时,当RecyclerView的item数只有三个时,拖动第二个item并拖出边界时,第三个item就会往右边动(按照正常逻辑,第三个item是不动的)。如图所示: 在排除了很多种可能的情况下,我试着改了下RecyclerView的布局,发现以下规律: 当 android:layout_height=”wrap_content” 时,就会出现两个item跟着

2017-06-22 14:24:11 2097

原创 Android动画分类(一)

1、官方分类,三种:属性动画(Android 3.0之后才添加)、视图动画(分为逐帧动画和补间动画)、Drawable 动画2、属性动画/

2017-03-04 15:47:22 1203

原创 git使用容易忽略的问题

一、Tag没有同步。我们在发布版本的时候,往往会打上一个tag,用来标识哪个版本!(1)、在远程仓库打标签,就是可视化的操作去添加,比如github上面的。这时候本地就看不到在运程仓库的标签,我们可以使用这个命令将远程标签更新到本地来!$ git fetch origin --tags(2)、在本地打完标签,也是需要将本地的推送到远程上面去的!本地打标签命令:$ git ta

2017-02-09 16:58:22 578

原创 基于OkHttpUtils自己实现一个检查升级软件功能

一、思路先请求后台接口,得到服务器的最新软件版本,然后和软件本身的版本进行对比,如果有最新的版本,则提示用户点击按钮进行下载,否则提示该版本为最新版本!逻辑是不是很简单哈~。我们现在主要的实现是在有最新版本时去下载更新!我们使用的网络框架是基于OkHttpUtils:https://github.com/hongyangAndroid/okhttputils二、上代码下载apk文件肯定

2016-12-29 16:52:15 1378 3

原创 我的第一个SDK

一,创建Module编写代码1,右击项目,选择module2,选择类型3,填写包名等信息,finish完成4,编写MyActivity及布局文件,导入资源MyActivity:public class MyActivity extends AppCompatActivity { @Override protected void on

2016-12-06 15:31:34 493

原创 Android 5.0以上Button去掉阴影

1,在Button标签中直接添加以下属性style=”?android:attr/borderlessButtonStyle”2,有的Button的属性已经抽成style,此时直接在style时添加上parent:name="btn_right_angle_bg_text" parent="@style/Widget.AppCompat.Button.Borderless"

2016-11-30 16:07:39 7796

原创 Metial Design首次使用

1、修改dialog颜色,见文章:metial design效果dialog并修改颜色2、给button,imagebutton等控件添加波纹效果:只需要在xml文件的控件属性中添加上android:background=" ?attr/selectableItemBackground "(只在控件大小范围内产生波纹)android:background=" ?attr/selecta

2016-11-28 17:54:59 1296

原创 selector的最佳用法

在进行UI布局的时候,我们经常会遇到这样的布局:如图这个包括背景的两种状态(分按下和没有按下)和圆角,之前我一直用的就是,先把圆角和背景写到一个drawable,分别写两个,然后再写一个selecor,这样做有点xx其实有一种更简单的写法如下:

2016-10-31 11:37:26 491

原创 TextView代码中的设置部分字体的颜色

mTextView = (TextView) findViewById(R.id.hello); SpannableStringBuilder builder = new SpannableStringBuilder(mTextView.getText().toString()); builder.setSpan(new StyleSpan(Typeface.BOL

2016-10-27 17:24:39 693

原创 Android Studio 导入.so文件

在工程gradle文件中配置apply plugin: 'com.android.application'android {// 导入.so文件 sourceSets { main { jniLibs.srcDirs = ['libs']//libs文件夹 } }}

2016-10-24 17:31:54 350

原创 解决65535的方法

L及以上的版本就不会出现65535问题(1),在项目的gradle中做以下配置apply plugin: 'com.android.application'android { defaultConfig { multiDexEnabled true }}这里就不用再添加依懒了,已经自动添加进来了(2),一般我们都会重写Application,所以

2016-10-24 15:51:58 4722

原创 读Android性能优化之典范笔记

文章地址:点击打开链接一,渲染(1)移除Window默认的Background;(2)移除XML布局文件中非必需的Background;(3)按需显示占位背景图片;(4)通过clipreset(5)尽量使用RelativeLayout替代LinearLayout,通过测试得知RelativeLayout的性能高过LinearLayout二、运算(1)能用fore

2016-10-18 12:00:24 244

原创 内存泄漏及解决方案

1,内存泄漏:一般内存泄漏(traditional memory leak)的原因是:当该对象的所有引用都已经释放了,对象仍未被释放。(译者注:Cursor忘记关闭等)逻辑内存泄漏(logical memory leak)的原因是:当应用不再需要这个对象,当仍未释放该对象的所有引用。2,产生内存泄漏原因(1)将Activity或View等对象定义成静态变量,如果这个静态变量在A

2016-10-17 16:08:46 277

原创 Handler的多种使用方法

在子线程中更新UI线程1,通过发消息private Button btn;private Handler mHandler = new MyHandler(this);private static class MyHandler extends Handler { private WeakReference mWeakReferenceActivity; pub

2016-10-15 13:59:03 909

原创 仿微信右滑SwipeBackLayout的使用

github地址:点击打开链接1、添加依赖:compile 'me.imid.swipebacklayout.lib:library:1.0.0'2、基类Activity继承SwipeBackActivityBaseActivity extends SwipeBackActivity3、不需要右滑的Activity在onCreate中添加以下语句即可:g

2016-10-14 15:59:51 5148 1

原创 基类的设计

注:可以链式继承FragmentActivity1,将一些网络错误,空数据等共同布局添加到基类里面来2,友盟统计数据的逻辑3,保存Activity栈4,EventBus注册和反注册(好像花费时间比较长,可以提供一个方式在实现类里面来控制注册和反注册)5,用户登录失效时重新登录6,ButterKnife的绑定和解绑7,Presenter的绑定和解绑(MVP架构)

2016-10-13 10:34:31 521

原创 api23及以上应用请求权限的解决方案

private void populateAutoComplete() { if (!mayRequestContacts()) { return; } // TODO: 2016/10/8 已获得权限时,需要完成以下任务}/** * 检查并请求权限 * @return true 为已获取到该权限,false为未获得权限 */private

2016-10-08 18:03:26 2617

原创 友盟多渠道打包总结

1,利用AS图形化打包(每个包都要编译,所花时间长):点击打开链接2,利用python脚本打包(只需编译一个包,其他不用编译,秒出):(1),打包原理:点击打开链接 代码下载:点击打开链接(2),安装python:点击打开链接(3),python使用:点击打开链接

2016-09-28 11:50:37 628

原创 代码无弹窗判断设备是否root

public class RootUtil { private final static String TAG = "RootUtil"; /** 判断手机是否root,不弹出root请求框 */ public static boolean isRoot() { String binPath = "/system/bin/su"; String xBin

2016-09-26 17:51:33 412

原创 Android判断设备是否为模拟器

public class AntiEmulator { private static String[] known_pipes = { "/dev/socket/qemud", "/dev/qemu_pipe" }; private static String[] known_qemu_drivers = {

2016-09-26 17:49:08 3970 7

原创 Fresco按比例缩放图片

<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/story_image" android:layout_width="fill_parent" android:layout_height="wrap_content" fresco:pressedStateOverlayImage="@color

2016-08-01 10:54:42 2236

原创 TextView代码中设置颜色大小

textViews[i].setTextColor(Color.parseColor("#3b3e40"));textViews[i].setTextSize(TypedValue.COMPLEX_UNIT_DIP,13);

2016-07-27 16:04:30 313

原创 自定义PopupWindow

一、自定义public class MyPopupWindow extends PopupWindow { // 根视图 private View mRootView; public View getmRootView() { return mRootView; } // LayoutInflater LayoutInfl

2016-07-17 11:53:30 1095

原创 公共值Constants

public class Constants { /** 网络标识值 */ public static class NetValue{ public static final int STATUS_NO_NETWORK =1; public static final int STATUS_TIMEOUT =2; public static fina

2016-07-17 11:34:13 826

原创 自定义ToolBar

自定义ToolBar,实现最大的自由度一、自定义控件/** * 自定义的标题 */public class TitleLayout extends RelativeLayout { private TextView tvTitle; private TextView tvRight; public TitleLayout(Context context

2016-07-17 11:19:11 245

原创 <第一行代码>笔记三

1、全局获取Context的技巧public class MyApplication extends Application { private static Context context; public static Context getContext() { return context; } @Override pub

2016-07-16 23:23:38 440

原创 开发常用框架

1、仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果,地址:https://github.com/saiwu-bigkoo/Android-PickerView2、高仿淘宝、京东商品详情页面的上拉加载图文详情功能,地址:https://github.com/cnbleu/SlideDetailsLayout3、多种下拉刷新效果、上拉加载更多、可配置自定义头部广

2016-07-16 22:58:05 982

原创 <第一行代码>笔记二

一、.9图片中画线的区域表示要拉伸的地方二、动态添加Fragment的步骤1、创建待添加的Fragment的实例2、获取到FragmentManager,在活动中可以直接调用getFragmentManager()3、开启一个事务4、向窗口中加入碎片,一般使用replace()5、提交事务Fragment fragment = new Fragment();Fra

2016-07-15 23:02:28 276

原创 <第一行代码>笔记一

一、隐藏Activity标题:requestWindowFeature(Window.FEATURE_NO_TITILE);//要在setContentView()之前调用二、向下一个活动传递数据(在要启动的Activity中提供一个方法给上一个Activity调用)启动Activity的最佳写法:public class SecondActivity extends BaseAc

2016-07-14 23:17:06 381

转载 AS多渠道打包

http://www.cnblogs.com/0616--ataozhijia/p/4203997.html

2016-07-14 17:22:57 301

测试安装包

测试安装包

2017-02-08

PHP与MySQL动态网站开发(第4版)pdf+源码

PHP与MySQL动态网站开发(第4版)pdf+源码

2015-05-07

C数据结构课程设计人机,网络,双人对战20*20五子棋游戏源码(包含课程设计文档)

用C语言写的一个数据结构课程设计,该程序实现了20*20棋盘大小的五子棋人工智能对战游戏程序,支持网络对战、支持双人游戏、支持棋局录制与重放,还有音乐播放功能 。(最重要的是包含课程设计文档,和程序的源代码)。

2014-09-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除