1. 程式人生 > >仿qq空間點贊 文字分段點選響應點選事件

仿qq空間點贊 文字分段點選響應點選事件


實現效果 :思路主要是使用TextView和SpanableStringBuilder的setSpan方法實現的 

參考文件http://androiddoc.qiniudn.com/reference/android/text/SpannableStringBuilder.html#setSpan(java.lang.Object, int, int, int)

佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="themeone.testtablayout.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:layout_width="wrap_content" android:id="@+id/tv_recieve"android:layout_height=
"wrap_content" android:text=""/> </RelativeLayout>

主要程式碼思路

public class MainActivity extends Activity implements View.OnClickListener {

        private TextView tv_recieve;
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_recieve = (TextView) findViewById(R.id.tv_recieve);tv_recieve.setOnClickListener(this);
//仿qq空間點贊text文字分段點選事件
setTextMultClick();
}
    //準備資料
private void setTextMultClick() {
        StringBuilder sb=new StringBuilder();
        for (int i = 0; i < 20; i++) {
            sb.append("好友"+i+",");
}

        String users=sb.substring(0,sb.lastIndexOf(","));
tv_recieve.setText(addClickPart(users), TextView.BufferType.SPANNABLE);
}

    //定義點選每個部分文字的處理方法
private SpannableStringBuilder addClickPart(String users) {
        ImageSpan imageSpan=new ImageSpan(getApplicationContext(),R.mipmap.ic_launcher);
SpannableString spanStr=new SpannableString("i.");//任意文字 主要是實現效果
        //Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 前後都不包括
spanStr.setSpan(imageSpan,0,1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//建立一個ssb 儲存總的使用者
SpannableStringBuilder ssb=new SpannableStringBuilder(spanStr);
ssb.append(users);
//為每段資料建立點選 事件
String[] users_array=users.split(",");
        if(users_array.length>0){
            for (int i = 0; i < users_array.length; i++) {
                final String user_name = users_array[i];//好友0
int start=users.indexOf(user_name)+spanStr.length();
//為每段資料增加點選事件
ssb.setSpan(new ClickableSpan() {
                    @Override
public void onClick(View widget) {
                        Toast.makeText(MainActivity.this,user_name, Toast.LENGTH_SHORT).show();
}

                    @Override
public void updateDrawState(TextPaint ds) {
                        super.updateDrawState(ds);
ds.setColor(Color.BLUE);
//                        ds.setUnderlineText(false);
}
                },start,start+user_name.length(),0);
}
        }

        return ssb.append("等"+users_array.length+"人覺得很贊");
}
}

相關推薦

仿qq空間 文字分段響應事件

實現效果 :思路主要是使用TextView和SpanableStringBuilder的setSpan方法實現的  參考文件http://androiddoc.qiniudn.com/reference/android/text/SpannableStringBuild

仿QQ空間動畫

ObjectAnimator anim1 = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 2.0f,1.0f); Ob

jsp實現仿QQ空間新建多個相冊名稱,向相冊中加入照片

ext forname parseint type 登錄失敗 ocr cli str null 工具:Eclipse,Oracle,smartupload.jar。語言:jsp,Java;數據存儲:Oracle。 實現功能介紹: 主要是新建相冊,能夠建多個相冊,

【Android檢視效果】仿QQ空間滑動改變標題欄顏色

最近在倒騰公司之前的專案,發現之前的介面是個白色標題欄,不是很美觀,所以做了些改進。 先看效果圖 簡單說下思路,整個佈局大體上是ScrollView裡面包含了一個ImageView和RecyclerView,所以先得到ImageView的高度,當ScrollView向上滑動

iOS感測器集錦、飛機大戰、開發除錯工具、強制更新、Swift仿QQ空間頭部等原始碼

iOS精選原始碼 飛機大作戰 iOS優質部落格 Apple於北京時間9月17日晚在官網釋出了Xcode 10正式版,QiShare團隊成員於9月18日中午統一升級以對現有專案做適配。期間,作者發現某專案使用Xcode 10編譯

仿QQ空間之打造個性化可拉伸頭部控制元件

(使用格式工廠將視訊轉換成gif格式時影響了gif效果,執行在真機上不影響效果) 這個效果是採用ListView並給ListView新增一個頭部來實現的,當然了要處理ListView的上拉,下拉及鬆開肯定要對ListView自定義; 先來看下ListView的頭部xml檔案:

無需軟體實現QQ空間以及空間全部說說

電腦上直接在瀏覽器開啟QQ空間,按F12開啟控制檯,輸入以下程式碼然後回車 function autoLike() { var list=document.getElementsByClassName("item qz_like_btn_v3 "); for(i=0;i<

jsp實現仿QQ空間新建多個相簿名稱,向相簿中新增照片

工具:Eclipse,Oracle,smartupload.jar;語言:jsp,Java;資料儲存:Oracle。 實現功能介紹: 主要是新建相簿,可以建多個相簿,在相簿中新增多張照片,刪除照片,刪除相簿,當相簿下有照片時先刪除照片才能刪除相簿。 因為每個相簿和照片要有所

多選本地相簿中的圖片並展示(仿QQ空間動態傳送頁面)上傳至伺服器

最近公司專案需要從本地上傳圖片到伺服器,直接去找才發現安卓居然還有這麼坑的時候,呼叫原生的只能選擇一張圖片,而且還沒有任何的細節優化,觸控圖片就直接返回了。這肯定不行啊!於是就在網上找啊找。。。找啊找。。。有很多都寫得花裡胡哨的看不懂,而且介面的UI也是low的不行。。終於

WPF仿QQ聊天框表情文字混排實現

二話不說。先上圖 圖中分別有檔案、文字+表情、純文字的展示,對於同一個list不同的展示形式,很明顯,應該用多個DataTemplate,那麼也就需要DataTemplateSelector了: class MessageDataTemplateSe

H5移動端實現仿QQ空間照片上傳效果程式碼

//獲取檔案url function createObjectURL(blob){ if (window.URL){ return window.URL.c

Android 高仿QQ空間廣告位 ——— 一個位置來回切換兩張廣告圖

刷動態時無意間發現了這個效果覺得用在打廣告上實在是妙,使用者只需要上下滑動列表就會自動切換廣告圖(感興趣的可以在刷空間的時候留意一下)。一:接下來就來說說這個效果的具體實現思路通過自定義ImageView、繪製兩張圖片在上面。通過刮刮卡原理在ImageView上繪製一個圓不斷

mui開發app之多圖壓縮與上傳(仿qq空間說說發表)

應廣大讀者建議,已經將該專案原始碼提交到地址: https://download.csdn.net/download/u014466109/10465677 與本部落格相關的多圖壓縮上傳程式碼在dashen/service/ask.html,請解壓專案並移動

Android帶你解析ScrollView--仿QQ空間標題欄漸變

緒論 今天來研究的是ScrollView-滾動檢視,滾動檢視又分橫向滾動檢視(HorizontalScrollView)和縱向滾動檢視(ScrollView),今天主要研究縱向的。相信大家在開發中經常用到,ScrollView的功能已經很強大了,但是仍然滿足不

設定TextView部分文字下劃線並響應事件(SpannableString)

實現效果 textview中改變《服務條款》的顏色、增加下劃線。 實現關鍵點: SpannableString的使用 SpannableString spanText=new SpannableString(getString(R.string.d

iOS 機制(防止按鈕重複觸發多次請求)

一、在按鈕的點選事件中實現下面方法:// 防止重複點選觸發多次請求        [[selfclass] cancelPreviousPerformRequestsWithTarget:selfsel

Android中同一個button按鈕每次響應不同的事件

開發中我們經常會遇到當點選一次按鈕後,按鈕上的text顯示改變為其他的,又或者當點選一次按鈕後按鈕變為紅色,當再次點選,又變回原來的顏色。 為了實現這種功能,我們可以為按鈕設定flag來標誌,每點選一次後就修改flag的值,然後通過判斷flag的值來實現不同的功能。 &l

Android/安卓仿淘寶直播效果/qq空間效果動畫

之前玩淘寶誤入它的直播頻道,發現它的直播介面的點贊效果挺好看,然後發現QQ控制元件點贊有類似動畫,於是趁有空花了點時間玩玩。 先上個效果圖: 添加了一個按鈕模擬點贊,點選多少次就出現多個水果,他們的運動軌跡和速度是不一樣的,而且帶有淡入淡出效果。這是淘寶直播的效果,qq

翻翻git之---實現QQ空間部分實現的自己定義控件 EasyLikeArea

append 設置圖 獲取 p2p mipmap 部分 spa tty tag 轉載請註明出處:王亟亟的大牛之路 昨天在家裏弄魚的事沒上班,也就沒寫東西。決定今天早上補一篇,正好看到了 Easy like area in the circle

用Python登錄好友QQ空間

selenium 說了 bdr cnblogs bsp 按鈕 att 最大 log   記得之前跟我女票說過,說要幫她空間點贊,點到999就不點了。剛開始還能天天記得,但是後來事情一多,就難免會忘記,前兩天點贊的時候忽然覺得這樣好枯燥啊,正好也在學Python,就在想能不能