Android View标签LabelView(电商、商城类APP常用)
LabelView是在github上一个开源的标签库。其项目主页是:https://github.com/linger1216//labelview
LabelView为一个TextView,ImageView或者为ListView中适配器getView返回的View,增加一个左上角或者右上角的标签,要实现的效果如图所示:
这种需求设计在商城类APP、电商类APP中比较常用,这些APP展示的商品,通常会增加一些促销或者该类商品的特征。
LabelView集成自Android TextView,可以像使用Android TextView一样使用LabelView,LabelView使用简单,如代码所示:
package zhangphil.demo;
import com.lid.lib.LabelView;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 为一个普通的Android TextView增加标签
LabelView label1 = new LabelView(this);
label1.setText("HOT");
label1.setBackgroundColor(0xffff5722);
label1.setTargetView(findViewById(R.id.textView1), 5, LabelView.Gravity.LEFT_TOP);
// 为一个普通的Android TextView增加标签
// 点击则删除LabelView
final LabelView label2 = new LabelView(this);
label2.setText("HOT");
label2.setBackgroundColor(0xffff5722);
label2.setTargetView(findViewById(R.id.textView2), 5, LabelView.Gravity.RIGHT_TOP);
label2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 删除标签
label2.remove();
}
});
// 为一个Android ImageView增加标签
LabelView label3 = new LabelView(this);
label3.setText("HOT");
label3.setBackgroundColor(0xffff5722);
label3.setTargetView(findViewById(R.id.imageView), 5, LabelView.Gravity.RIGHT_TOP);
// 为一个Android View增加标签
LabelView label4 = new LabelView(this);
label4.setText("HOT");
label4.setBackgroundColor(0xffff5722);
label4.setTargetView(findViewById(R.id.view), 5, LabelView.Gravity.RIGHT_TOP);
}
}
布局文件则很简单,就使用Android自身的基础View:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="zhangphil.demo.MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="100dip"
android:background="#e0e0e0"
android:gravity="center"
android:text="Zhang Phil" >
</TextView>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="100dip"
android:layout_marginTop="5dip"
android:background="#e0e0e0"
android:gravity="center"
android:text="Zhang Phil" >
</TextView>
<ImageView
android:id="@+id/imageView"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="5dip"
android:background="#e0e0e0"
android:src="@drawable/ic_launcher" >
</ImageView>
<View
android:id="@+id/view"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="5dip"
android:background="#e0e0e0" >
</View>
</LinearLayout>
代码运行结果就是上文中所示效果。
LabelView的distance和设置的text代表涵义如图所示: