Android开发小结1

接触Android约有半年时间了,虽然有两年的java开发经验,发现Android还是有很多需要学习的地方。有些知识点是第一次用到,简单记录下来,一方面加深印象,一方面供以后参考。

1.EventBus 1.0.1的使用

例:

(1) XX1.java 触发EventBus事件;

RefreshUnReadEvent refreshUnReadEvent = new RefreshUnReadEvent();
refreshUnReadEvent.setFromUserid(resp.getFromUserId());
EventBus.getDefault().post(refreshUnReadEvent);

(2) XX2.java 注册

EventBus.getDefault().register(this, "refreshUnRead", RefreshUnReadEvent.class);

(3) XX2.java 具体实现(此处的方法名需与注册的“refreshUnRead”保持一致)

public void refreshUnReadMainThread(RefreshUnReadEvent event) {
  //event.getFromUserid()
}

此处RefreshUnReadEvent 相当于传统的javaBean,可利用其进行传参。

2.推送通知

例:

//设置点击 推送信息跳转页面
Intent intent = new Intent();intent.setClass(mContext, HomeActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);Bundle bundle = new 
bundle.putString("fileId", message.getFromUserFileid());
bundle.putBoolean("isGroup", false);intent.putExtras(bundle);//固定显示推送消息 为“您有一条新的消息” liuyangNotificationUtil.getInstance(mContext).notifyUserMessage("导购顾问", "您有一条新的消息", intent);
//具体推送操作
public void notifyUserMessage(String title, String content, Intent intent)
    {
        if (mNotificationManager == null)
        {
            mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        }
        mNotification = new Notification(R.drawable.ic_launcher, content, System.currentTimeMillis());
        mNotification.setLatestEventInfo(mContext, title, content, getPendingIntentForMessage(intent));
        mNotification.flags |= Notification.FLAG_AUTO_CANCEL;//根据Notification.FLAG_AUTO_CANCEL 改变推送提示格式
        mNotificationManager.notify(NOTIFICATION_ID, mNotification);// 发起通知
    }
    
    public PendingIntent getPendingIntentForMessage(Intent intent)
    {
        PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        return pendingIntent;
    }

3.#广播Broadcast

例:

(1) XX1.java
    Intent clearUnreadIntent = new Intent(MTActions.CLEAR_CONVERSATION_UNREAD_COUNT_ACTION);
    clearUnreadIntent.putExtra("conversationType", Constants.DISCUSSION_CONVERSATION);
    clearUnreadIntent.putExtra("conversationId", discussion.getDiscussionId());
    mContext.sendBroadcast(clearUnreadIntent);
(2) XX2.java
    //操作
    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
                if (MTActions.CLEAR_CONVERSATION_UNREAD_COUNT_ACTION.equals(action)) {
                    //操作
            }
        }
    }
    //注册广播
        private void registerReceivers() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(MTActions.CLEAR_CONVERSATION_UNREAD_COUNT_ACTION);
        registerReceiver(mReceiver, filter);
    }
    //注销广播
    unregisterReceiver(mReceiver);

4.左划删除(SwipeMenuListView)

例:

//具体见github 有现成demo
//此处只做删除操作,具体其它操作度娘
    (1) 
    SwipeMenuCreator creator = new SwipeMenuCreator() {

        @Override
        public void create(SwipeMenu menu) {
            // create "delete" item
            SwipeMenuItem deleteItem = new SwipeMenuItem(
                    getApplicationContext());
            // set item background
            deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
                    0x3F, 0x25)));
            // set item width
            deleteItem.setWidth(dp2px(70));
            // set a icon
            deleteItem.setIcon(R.drawable.ic_delete);
            // add to menu
            menu.addMenuItem(deleteItem);
        }
    };
    (2)
    private SwipeMenuListView mListView;
    mListView = (SwipeMenuListView) findViewById(R.id.lv_conversation);
        mListView.setMenuCreator(creator);
    mListView.setAdapter(mConversationListAdapter);
        mListView.setOnItemClickListener(this);
    mListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
                switch (index) {
                    case 0://左划删除
                        deleteViewList(position);
                        refresh();
                        break;
                }
                return false;
            }
        });

5.无法打包或者部分手机不兼容(超过65536,部分Android系统自动分包)

 (1)build.gradle文件
    defaultConfig{
        multiDexEnabled = true
    }
    dependencies {
        //添加支持multidex的兼容包
        compile 'com.android.support:multidex:1.0.0'
    }
 (2)MTApplication.java文件
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(base);
    }

6.定时(最大61秒,从61-11开始10秒内,每1秒执行一次)

CountDownTimer downTimer = new CountDownTimer(61000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        if (millisUntilFinished <= 11000 && millisUntilFinished > 0) {
            record_rl.setVisibility(View.GONE);
            rl_daojishi.setVisibility(View.VISIBLE);
            record_daojishi_text.setText(millisUntilFinished / 1000 + "");
        }
    }

    @Override
    public void onFinish() {
        rl_daojishi.setVisibility(View.GONE);
    }
};

.

7.

    //按住说话,提示需动态切换图片 liuyang
    Subscription subscription;
    int position = 0;
    int image[] = {R.drawable.img_yuyin1, R.drawable.img_yuyin2, R.drawable.img_yuyin3, R.drawable.img_yuyin};

    private void changeMicro() {
        if (subscription != null) {
            return;
        }
        record_img.setImageResource(image[0]);
        subscription = Observable.interval(300, TimeUnit.MILLISECONDS).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Long>() {
            @Override
            public void call(Long aLong) {
                if (subscription != null && !subscription.isUnsubscribed()) {
                    record_img.setImageResource(image[position % image.length]);
                    position++;
                }
            }
        });
    }
    //取消图片切换
    private void cancelMicro() {
        if (subscription != null) {
            subscription.unsubscribe();
            subscription = null;
            position = 0;
        }
        record_img.setImageResource(R.drawable.record_cancel);
    }   

8.高亮,链接

textMessage.setAutoLinkMask(Linkify.ALL);

9.Shader(盗用同事的文章)

[简书]http://www.jianshu.com/p/08cf25f51c73

10.ActionSheet盗用同事的文章)

[简书http://www.jianshu.com/p/1b548491bd5a]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容