Android美团评分组件及消息提示框自我定制(14) 博客分类: Android初步 安卓评分组件定制消息提示框
程序员文章站
2024-03-11 21:02:31
...
评分组件也疯狂
美团完,淘宝完,消费完,那些各种评分组件是不是让你也疯狂呢,那么,现在我们自己来做一个评分组件,小星星登场。
RatingBar 这里我们定义两个五角星评分组件,以便显示我们定义与系统默认的区别。
首先布局文档:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/TableLayout1" 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" tools:context=".MainActivity" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:textSize="50px" android:layout_height="fill_parent" /> </TableRow> <RatingBar android:id="@+id/ratingBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="4"//星星的数目为4颗 android:rating="3" />//评分为三颗星 <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="评分完成 " /> </TableLayout>
这里我们用TableRow布局,而且这一节课我们会讲到Toast信息提示框的使用,就是我们经常在手机点了什么,下面出现的一个信息框,然后一会又隐去的那个。MainActivity.java文件代码:
rivate RatingBar rating=null; private TextView text=null; private Button bt; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.rating=(RatingBar)super.findViewById(R.id.ratingBar1); this.text=(TextView)super.findViewById(R.id.textView1); this.rating.setOnRatingBarChangeListener(new Rating()); this.bt=(Button)super.findViewById(R.id.button1); this.bt.setOnClickListener(new click()); } 相信经过前面几节课的学习,大家对上一段代码都很熟悉了,下面就是事件处理了。这里我们模拟一下美团的评分系统,之前做的美团美食列表评分只是图片,现在我们真枪实战: private class Rating implements OnRatingBarChangeListener{ @Override public void onRatingChanged(RatingBar ratingbar, float rating, boolean fromuser) { // TODO Auto-generated method stub //text.append("当前评分:"+ratingbar.getRating()+" "+"增长步长: "+ratingbar.getStepSize()); String result=null; switch((int)rating){ case 5: result="非常满意"; break; case 4: result="满意"; break; case 3: result="还可以"; break; case 2: result="不满意"; break; case 1: result="非常不满意"; break; } text.setText(result); } }
然后处理button事件,这里我们实现一个与系统默认不一样的信息提示框,带图片自定义的:
<!--EndFragment-->
private class click implements OnClickListener{ @Override public void onClick(View arg0) { Toast t=Toast.makeText(MainActivity.this, "长时间显示", Toast.LENGTH_LONG);//这里可以定义长时间和短时间显示 t.setGravity(Gravity.CENTER, 60, 30);//对齐方式及位置 //取得toast的view组件,以便添加图片 LinearLayout myview=(LinearLayout)t.getView(); ImageView image=new ImageView(MainActivity.this); image.setImageResource(R.drawable.back);//设置图片资源 myview.addView(image,0); t.show(); } }
注意一定要得到Toast的view组件才可以添加图片
实现效果如下:
<!--EndFragment--><!--EndFragment--><!--EndFragment-->