2016-02-25 102 views
0

我需要在我的android應用程序中做這樣的圖像,我不知道哪個是最好的方式來做到這一點。Seekbar或水平LinearLayout?

值將介於0和150之間,當然數字必須水平滾動(蒙版是靜態的)。

我有面具圖像的線條,我想我應該把數字放在一個水平的LinearLayout編程完整的TextViews。我知道TextViews應該具有的確切邊距(在dp中)。

滾動後,TextViews必須停在較大的行,我必須能夠獲得中心的數字(當前選定的值)。

你會怎麼做到這一點?

"seekbar"

SOLUTION:

使用HorizontalPicker library它已經輕鬆達到我想要的。

佈局將如下所示。

<RelativeLayout  
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    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"> 


<com.wefika.horizontalpicker.HorizontalPicker 
    android:id="@+id/picker" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@android:color/black" 
    android:textSize="@integer/picker_text_size" 
    app:sideItems="3" 
    android:layout_centerVertical="true" 
    android:marqueeRepeatLimit="-1" 
    /> 
<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:src="@drawable/mask_image" 
    android:layout_centerVertical="true" 
    android:clickable="false" 
    android:scaleType="centerCrop"/> 

+0

https://github.com/rtugeek/ColorSeekBar –

回答

1

檢查this它可能滿足您的需求量的。

0

我以前做過這個代碼(對不起,它不是開源或任何東西),所以我有一些壞消息給你。比這更復雜一點。

大多數你問理論上可以用RecyclerView來完成,類似下面的代碼東西:

RecyclerView rv = (RecyclerView) findViewById(R.id.recycler); 
rv.setLayoutManager(new LinearLayoutManager(this, HORIZONTAL, false); 
rv.setAdapter(// Some adapter that will generate the TextViews with numbers and the lines above/below the numbers); 

,靜態疊加,你只需要添加一個單獨的佈局。

上面的代碼,問題是,你將不能夠做到這一點的一部分:

滾動之後,TextViews必須停在大線

我發現的唯一方法做到這一點,是通過創建一個100%的自定義視圖。這意味着,你必須先從下面的代碼:

public class CustomHorizontalSeekBar extends View { 

這個類有觸摸事件和含有Scroller在滾動,加速,減速,以幫助,將有直接覆蓋

@Override 
protected void onDraw(Canvas canvas){ 
} 

要直接在畫布上執行所有繪圖,完成完美工作是相當有點工作的,但肯定會有令人滿意的最終結果。

祝你好運n快樂編碼。

+0

對於我使用過的圖書館來說不是太難。在我編輯的問題中檢查解決方案。 – Borja

相關問題