2016-12-19 48 views
3

我正在使用此庫來模糊視圖(https://github.com/Dimezis/BlurView/blob/master/app/src/main/res/values/colors.xml)。(android)我如何讓每個列表項目模糊?

該庫具有custsom視圖和'BlurView',即使背景圖像發生變化,它也會動態模糊所有底層視圖。它工作得很好。

我想爲我的RecyclerView實現它,以便每個項目的背景可以模糊活動的背景。 但結果如下: enter image description here

我覺得這個庫拍了一個應用程序屏幕快照並模糊它。您可以看到工具欄完全模糊。 我希望這種模糊效果是動態的,以便它可以在用戶上下滾動時模糊背景實時。它作爲單個視圖運行良好,但不能作爲列表項目。

這是我的代碼。

MainActivity.java

ListView listView = (ListView) findViewById(R.id.listview); 
    PlanListAdapter adapter = new PlanListAdapter(this, getWindow().getDecorView(),new String[]{"Cookie", "Pie", "Banana split", "Peanut butter"}); 
    listView.setAdapter(adapter); 

PlanListAdapter.java

public class PlanListAdapter extends ArrayAdapter { 


    private String[] titles; 
    private Context context; 
    private View decorView; 

    public PlanListAdapter(Context context, View decorView, String[] names) { 
     super(context, -1); 
     this.context = context; 
     this.titles = names; 
     this.decorView = decorView; 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View rootView = parent.getRootView(); 
     View itemView = LayoutInflater.from(context).inflate(R.layout.layout_planitem, null, false); 
     BlurView blurView = (BlurView) itemView.findViewById(R.id.blur_item); 
     blurView.setupWith(rootView) 
       .windowBackground(decorView.getBackground()) 
       .blurAlgorithm(new RenderScriptBlur(context, true)) 
       .blurRadius(24f); 

     return itemView; 
    } 

    @Override 
    public int getCount() { 
     return titles.length; 
    } 
} 

回答

3

我是誰開發了這個庫的傢伙。 我試圖重現此錯誤,但與RecyclerView安裝程序,我認爲,如果它在列表中,BlurView無法在屏幕上獲得正確的位置。

你實際上可以在Github上激發一個問題,我會盡量在最近的時間內解決這個問題。我認爲應該有使用View.getLocationOnScreen()

編輯類似案件的解決方法: 我已經更新到BlurView版本1.3.0,修復了你的情況是包括在內。 現在位置相對於rootView進行了適當的計算。

+2

已更新回答,現在問題已解決 – Dimezis

0

所有模糊庫使用Android的的renderScript庫,這對於一些Android手機有點問題(不論其Android版本)

下面是一個運行時異常,例如,你可能會遇到:

android.support.v8.renderscript.RSRuntimeException 
SourceFile line 100 in BlurringView.a() 
Error loading libRSSupport library 

由於這是本機庫,因此無法處理這些錯誤。即使在某些型號的三星Galaxy上,我也遇到了這個錯誤。因此,請注意這一點,如果不必使用模糊庫,請不要使用模糊庫。

這裏是關於主題的更多信息:

Android - Renderscript Support Library - Error loading RS jni library

如果你真的想在你的視圖使用模糊,你可以檢查這個庫。如果您需要更多幫助,我可以使用此庫向您發送示例代碼。

https://developers.500px.com/a-blurring-view-for-android-7f33d41a047d#.nnl0sxpoz

相關問題