Skip to content

Commit 3296e73

Browse files
committed
新增menu示例
1 parent c02857f commit 3296e73

6 files changed

Lines changed: 188 additions & 1 deletion

File tree

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
<activity android:name=".DemoTwoRecyclerViewActivity"/>
2525
<activity android:name=".DemoHomeActivity"/>
2626
<activity android:name=".DemoTopBorderActivity"/>
27+
<activity android:name=".DemoMenuActivity"/>
28+
29+
2730
</application>
2831

2932
</manifest>
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package org.evilbinary.tv;
2+
3+
import android.app.Activity;
4+
import android.os.Bundle;
5+
import android.support.v7.widget.GridLayoutManager;
6+
import android.support.v7.widget.LinearLayoutManager;
7+
import android.support.v7.widget.RecyclerView;
8+
import android.util.Log;
9+
import android.view.View;
10+
11+
import org.evilbinary.tv.widget.BorderView;
12+
13+
/**
14+
* 作者:evilbinary on 4/10/16.
15+
* 邮箱:rootdebug@163.com
16+
*/
17+
public class DemoMenuActivity extends Activity {
18+
private BorderView border;
19+
20+
21+
private String mCategory[] = new String[]{"全部频道", "美食", "休闲娱乐", "购物"};
22+
//二级列表数据
23+
private String mDatas[][] = new String[][]{
24+
new String[]{"全部美食", "江浙菜", "川菜", "粤菜", "湘菜"},
25+
new String[]{"全部休闲娱乐", "咖啡厅", "酒吧", "茶馆", "KTV"},
26+
new String[]{"全部购物", "综合商场", "服饰鞋包", "运动户外"},
27+
new String[]{"全部休闲娱乐", "咖啡厅", "酒吧", "茶馆"},
28+
29+
};
30+
31+
private MyAdapter secondAdapter;
32+
33+
@Override
34+
protected void onCreate(Bundle savedInstanceState) {
35+
super.onCreate(savedInstanceState);
36+
setContentView(R.layout.demo_menu);
37+
38+
39+
border = new BorderView(this);
40+
border.setBackgroundResource(R.drawable.border_red);
41+
42+
RecyclerView firstRecyclerView = (RecyclerView) findViewById(R.id.firstRecyclerView);
43+
RecyclerView secondRecyclerView = (RecyclerView) findViewById(R.id.secondRecyclerView);
44+
45+
GridLayoutManager layoutManager = new GridLayoutManager(this,1);
46+
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
47+
firstRecyclerView.setLayoutManager(layoutManager);
48+
firstRecyclerView.setFocusable(false);
49+
50+
51+
52+
GridLayoutManager layoutManager2 = new GridLayoutManager(this,1);
53+
layoutManager2.setOrientation(LinearLayoutManager.VERTICAL);
54+
secondRecyclerView.setLayoutManager(layoutManager2);
55+
secondRecyclerView.setFocusable(false);
56+
57+
58+
secondAdapter=new MyAdapter(this,new String[]{},R.layout.item_menu);
59+
secondRecyclerView.setAdapter(secondAdapter);
60+
61+
62+
// 创建Adapter,并指定数据集
63+
MyAdapter adapter = new MyAdapter(this, mCategory,R.layout.item_menu,new View.OnFocusChangeListener(){
64+
65+
@Override
66+
public void onFocusChange(View v, boolean hasFocus) {
67+
if(hasFocus) {
68+
int pos = (int) v.getTag();
69+
secondAdapter.setData(mDatas[pos]);
70+
secondAdapter.notifyDataSetChanged();
71+
Log.d("tt", "onFocusChange===>"+pos);
72+
}
73+
}
74+
});
75+
// 设置Adapter
76+
firstRecyclerView.setAdapter(adapter);
77+
firstRecyclerView.scrollToPosition(0);
78+
79+
border.getEffect().setScalable(false);
80+
border.attachTo(firstRecyclerView);
81+
border.attachTo(secondRecyclerView);
82+
83+
84+
85+
}
86+
87+
88+
89+
90+
91+
}

app/src/main/java/org/evilbinary/tv/MyAdapter.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
1717
private String[] mDataset;
1818
private Context mContex;
1919
private int id;
20+
private View.OnFocusChangeListener mOnFocusChangeListener;
2021

2122
public MyAdapter(Context context, String[] dataset) {
2223
super();
@@ -30,6 +31,14 @@ public MyAdapter(Context context, String[] dataset,int id) {
3031
this.id=id;
3132
}
3233

34+
public MyAdapter(Context context, String[] dataset,int id,View.OnFocusChangeListener onFocusChangeListener) {
35+
super();
36+
mContex = context;
37+
mDataset = dataset;
38+
this.id=id;
39+
this.mOnFocusChangeListener=onFocusChangeListener;
40+
}
41+
3342

3443
@Override
3544
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
@@ -40,13 +49,15 @@ public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
4049
View view = LayoutInflater.from(mContex).inflate(resId, viewGroup, false);
4150
ViewHolder holder = new ViewHolder(view);
4251

43-
4452
return holder;
4553
}
4654

4755
@Override
4856
public void onBindViewHolder(ViewHolder viewHolder, int i) {
4957
viewHolder.mTextView.setText(mDataset[i]);
58+
viewHolder.itemView.setTag(i);
59+
viewHolder.itemView.setOnFocusChangeListener(mOnFocusChangeListener);
60+
5061
}
5162

5263
@Override
@@ -65,5 +76,8 @@ public ViewHolder(View itemView) {
6576
}
6677
}
6778

79+
public void setData(String[] data){
80+
this.mDataset=data;
81+
}
6882

6983
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="match_parent"
4+
android:layout_height="match_parent"
5+
android:gravity="center"
6+
android:clipChildren="false"
7+
android:layout_gravity="center"
8+
9+
android:orientation="vertical">
10+
11+
<android.support.v7.widget.RecyclerView
12+
android:focusable="false"
13+
android:id="@+id/firstRecyclerView"
14+
android:layout_width="200dp"
15+
android:layout_height="wrap_content"
16+
android:layout_gravity="center"
17+
android:clipToPadding="false"
18+
android:paddingBottom="80dp"
19+
android:layout_alignParentTop="true"
20+
android:layout_alignParentStart="true"
21+
android:layout_marginStart="35dp" />
22+
23+
24+
<android.support.v7.widget.RecyclerView
25+
android:focusable="false"
26+
27+
android:id="@+id/secondRecyclerView"
28+
android:layout_width="200dp"
29+
android:layout_height="wrap_content"
30+
android:layout_gravity="center"
31+
android:clipToPadding="false"
32+
android:paddingBottom="80dp"
33+
android:layout_alignParentTop="true"
34+
android:layout_toEndOf="@+id/firstRecyclerView" />
35+
36+
<!--android:paddingTop="10dp"-->
37+
38+
39+
</RelativeLayout>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="300dp"
4+
android:layout_height="80dp"
5+
android:layout_gravity="center"
6+
android:background="@drawable/list_item_shape"
7+
android:focusable="true"
8+
android:gravity="center">
9+
10+
<ImageView
11+
android:id="@+id/imageView"
12+
android:layout_width="60dp"
13+
android:layout_height="60dp"
14+
android:layout_alignParentLeft="true"
15+
android:layout_alignParentStart="true"
16+
android:layout_centerVertical="true"
17+
android:layout_marginLeft="15dp"
18+
android:scaleType="fitXY"
19+
android:src="@drawable/demo1" />
20+
21+
<TextView
22+
android:id="@+id/textView"
23+
android:layout_width="180dp"
24+
android:layout_height="80dp"
25+
android:layout_alignParentEnd="true"
26+
android:layout_alignParentRight="true"
27+
android:layout_alignParentTop="true"
28+
android:layout_gravity="center"
29+
android:layout_toEndOf="@+id/imageView"
30+
android:layout_toRightOf="@+id/imageView"
31+
android:focusable="false"
32+
android:gravity="center"
33+
android:text="ddd"
34+
android:textAlignment="center"
35+
android:textColor="@color/white"
36+
android:textSize="24sp" />
37+
38+
39+
</RelativeLayout>

lib/src/main/java/org/evilbinary/tv/widget/BorderEffect.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ public void onLayoutChange(View v, int left, int top, int right, int bottom, int
204204
protected List<Animator> getScaleAnimator(View view, boolean isScale) {
205205

206206
List<Animator> animatorList = new ArrayList<Animator>(2);
207+
if(!mScalable) return animatorList;
207208
try {
208209
float scaleBefore = 1.0f;
209210
float scaleAfter = mScale;

0 commit comments

Comments
 (0)