Android架构学习之路
文章平均质量分 67
senyoung
喜爱android和java
展开
-
极光推送-点击通知栏跳到指定页面
在MyReceiver接收器里面,添加以下代码:if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { Log.d(TAG, "[MyReceiver] 用户点击打开了通知"); //打开自定义的Activity原创 2016-10-11 10:12:32 · 24680 阅读 · 6 评论 -
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 · 3999 阅读 · 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 · 2267 阅读 · 0 评论 -
RecyclerView另类实现高度固定
1、设置好宽高度android:layout_width="match_parent"android:layout_height="124dp"2、在代码中设置RecyclerView不可滑动rcv.setNestedScrollingEnabled(false);3、使用最新版本的RecyclerView是可以解决自适就高度的原创 2016-07-26 09:22:17 · 7159 阅读 · 0 评论 -
自定义PopupWindow
一、自定义public class MyPopupWindow extends PopupWindow { // 根视图 private View mRootView; public View getmRootView() { return mRootView; } // LayoutInflater LayoutInfl原创 2016-07-17 11:53:30 · 1135 阅读 · 0 评论 -
公共值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 · 859 阅读 · 0 评论 -
自定义ToolBar
自定义ToolBar,实现最大的自由度一、自定义控件/** * 自定义的标题 */public class TitleLayout extends RelativeLayout { private TextView tvTitle; private TextView tvRight; public TitleLayout(Context context原创 2016-07-17 11:19:11 · 264 阅读 · 0 评论 -
<第一行代码>笔记三
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 · 461 阅读 · 0 评论 -
开发常用框架
1、仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果,地址:https://github.com/saiwu-bigkoo/Android-PickerView2、高仿淘宝、京东商品详情页面的上拉加载图文详情功能,地址:https://github.com/cnbleu/SlideDetailsLayout3、多种下拉刷新效果、上拉加载更多、可配置自定义头部广原创 2016-07-16 22:58:05 · 1009 阅读 · 0 评论 -
<第一行代码>笔记二
一、.9图片中画线的区域表示要拉伸的地方二、动态添加Fragment的步骤1、创建待添加的Fragment的实例2、获取到FragmentManager,在活动中可以直接调用getFragmentManager()3、开启一个事务4、向窗口中加入碎片,一般使用replace()5、提交事务Fragment fragment = new Fragment();Fra原创 2016-07-15 23:02:28 · 296 阅读 · 0 评论 -
<第一行代码>笔记一
一、隐藏Activity标题:requestWindowFeature(Window.FEATURE_NO_TITILE);//要在setContentView()之前调用二、向下一个活动传递数据(在要启动的Activity中提供一个方法给上一个Activity调用)启动Activity的最佳写法:public class SecondActivity extends BaseAc原创 2016-07-14 23:17:06 · 397 阅读 · 0 评论 -
代码无弹窗判断设备是否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 · 440 阅读 · 0 评论 -
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 · 719 阅读 · 0 评论 -
Android动画分类(一)
1、官方分类,三种:属性动画(Android 3.0之后才添加)、视图动画(分为逐帧动画和补间动画)、Drawable 动画2、属性动画/原创 2017-03-04 15:47:22 · 1243 阅读 · 0 评论 -
基于OkHttpUtils自己实现一个检查升级软件功能
一、思路先请求后台接口,得到服务器的最新软件版本,然后和软件本身的版本进行对比,如果有最新的版本,则提示用户点击按钮进行下载,否则提示该版本为最新版本!逻辑是不是很简单哈~。我们现在主要的实现是在有最新版本时去下载更新!我们使用的网络框架是基于OkHttpUtils:https://github.com/hongyangAndroid/okhttputils二、上代码下载apk文件肯定原创 2016-12-29 16:52:15 · 1399 阅读 · 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 · 518 阅读 · 0 评论 -
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 · 7834 阅读 · 0 评论 -
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 · 1369 阅读 · 0 评论 -
selector的最佳用法
在进行UI布局的时候,我们经常会遇到这样的布局:如图这个包括背景的两种状态(分按下和没有按下)和圆角,之前我一直用的就是,先把圆角和背景写到一个drawable,分别写两个,然后再写一个selecor,这样做有点xx其实有一种更简单的写法如下:原创 2016-10-31 11:37:26 · 513 阅读 · 0 评论 -
api23及以上应用请求权限的解决方案
private void populateAutoComplete() { if (!mayRequestContacts()) { return; } // TODO: 2016/10/8 已获得权限时,需要完成以下任务}/** * 检查并请求权限 * @return true 为已获取到该权限,false为未获得权限 */private原创 2016-10-08 18:03:26 · 2652 阅读 · 0 评论 -
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 · 3880 阅读 · 0 评论 -
读Android性能优化之典范笔记
文章地址:点击打开链接一,渲染(1)移除Window默认的Background;(2)移除XML布局文件中非必需的Background;(3)按需显示占位背景图片;(4)通过clipreset(5)尽量使用RelativeLayout替代LinearLayout,通过测试得知RelativeLayout的性能高过LinearLayout二、运算(1)能用fore原创 2016-10-18 12:00:24 · 256 阅读 · 0 评论 -
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 · 7730 阅读 · 0 评论 -
AS多渠道打包
http://www.cnblogs.com/0616--ataozhijia/p/4203997.html转载 2016-07-14 17:22:57 · 331 阅读 · 0 评论 -
底部弹出框
一、自定义一个类弹出框类:/** * Bottom弹出框 * Created by kuyue on 2016/7/8. */public class MyBottomDialog{ private Dialog dialog; private Window window; public Window getWindow() { retu原创 2016-07-12 11:31:31 · 923 阅读 · 0 评论 -
使具有物理按键的手机能够显示Action Bar overflow
让overflow始终都显示:public class XxxActivity{ @Override protected void onCreate(Bundle savedInstanceState) { ... getOverflowMenu(); } //force to show overflow menu in actionbar fo原创 2015-06-23 20:59:58 · 400 阅读 · 0 评论 -
3、Context上下文
一、Activity Context二、Application Context原创 2015-06-20 22:07:10 · 384 阅读 · 0 评论 -
内存泄漏及解决方案
1,内存泄漏:一般内存泄漏(traditional memory leak)的原因是:当该对象的所有引用都已经释放了,对象仍未被释放。(译者注:Cursor忘记关闭等)逻辑内存泄漏(logical memory leak)的原因是:当应用不再需要这个对象,当仍未释放该对象的所有引用。2,产生内存泄漏原因(1)将Activity或View等对象定义成静态变量,如果这个静态变量在A原创 2016-10-17 16:08:46 · 308 阅读 · 0 评论 -
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 · 945 阅读 · 0 评论 -
仿微信右滑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 · 5170 阅读 · 1 评论 -
Android Studio 导入.so文件
在工程gradle文件中配置apply plugin: 'com.android.application'android {// 导入.so文件 sourceSets { main { jniLibs.srcDirs = ['libs']//libs文件夹 } }}原创 2016-10-24 17:31:54 · 378 阅读 · 0 评论 -
友盟多渠道打包总结
1,利用AS图形化打包(每个包都要编译,所花时间长):点击打开链接2,利用python脚本打包(只需编译一个包,其他不用编译,秒出):(1),打包原理:点击打开链接 代码下载:点击打开链接(2),安装python:点击打开链接(3),python使用:点击打开链接原创 2016-09-28 11:50:37 · 649 阅读 · 0 评论 -
解决65535的方法
L及以上的版本就不会出现65535问题(1),在项目的gradle中做以下配置apply plugin: 'com.android.application'android { defaultConfig { multiDexEnabled true }}这里就不用再添加依懒了,已经自动添加进来了(2),一般我们都会重写Application,所以原创 2016-10-24 15:51:58 · 5048 阅读 · 0 评论 -
基类的设计
注:可以链式继承FragmentActivity1,将一些网络错误,空数据等共同布局添加到基类里面来2,友盟统计数据的逻辑3,保存Activity栈4,EventBus注册和反注册(好像花费时间比较长,可以提供一个方式在实现类里面来控制注册和反注册)5,用户登录失效时重新登录6,ButterKnife的绑定和解绑7,Presenter的绑定和解绑(MVP架构)原创 2016-10-13 10:34:31 · 540 阅读 · 0 评论 -
android ScrollView自动滑到顶部
scrollview 自动定位到顶部利用获取焦点的方式定位到最顶部的组件或layoutrl_layout = (RelativeLayout) rootView.findViewById(R.id.rl_layout);// scrollview的子组件rl_layout.setFocusable(true);rl_layout.setFocusable转载 2015-11-13 11:10:57 · 1100 阅读 · 0 评论 -
Android Studio使用
1、选中相应类,按Ctrl+Q -> 弹出悬浮框显示该类信息(也可以到Settings中的Editor的General中的Other,点击Show quit doc on mouse Delay (ms))2、按Ctrl并点击相应类,跳到源码3、双击可视化Button,即可输入相关信息4、按Ctrl+Tab切换编辑窗口5、ctrl + shift + space原创 2016-01-02 15:08:24 · 279 阅读 · 0 评论 -
WebView与原生交互需要重写的方法
setWebChromeClient主要处理解析,渲染网页等浏览器做的事情WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 mWebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgress原创 2016-07-12 11:15:30 · 1359 阅读 · 0 评论 -
Gson的使用
1、对象转成json字符串:GsonUtils.getInstance().toJson(mGoodDetail)//mGoodDetail为对象原创 2016-07-08 10:17:09 · 244 阅读 · 0 评论 -
TextView自定义跑马灯效果
在复杂的布局中想要使用跑马灯效果需要自己自定义TextView,因为有可能在复杂的布局中原来的TextView获取不到焦点,就不会有效果解决方法:自己重写TextView:public class MarqueeTextView extends TextView { public MarqueeTextView(Context context) { sup原创 2016-07-05 14:17:57 · 418 阅读 · 0 评论 -
解决第一次启动应用黑屏或者白屏的方法
一、解决第一次启动应用黑屏或者白屏的方法:通过单独设置启动页面的主题:android:name=".activity.SpayActivity" android:theme="@style/Theme.AppStartLoadTranslucent" android:screenOrientation="portrait" > android:原创 2016-07-05 09:39:11 · 4670 阅读 · 0 评论