自定义一个Toast
要实现这样的效果:
使用下面的代码:
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.book_reading_seekbar_toast, null);
TextView chapterNameTV = (TextView) view.findViewById(R.id.chapterName);
TextView percentageTV = (TextView) view.findViewById(R.id.percentage);
chapterNameTV.setText(chapterName);
percentageTV.setText(df.format(persent * 100) + "%");
Toast toast = new Toast(this);
toast.setGravity(Gravity.BOTTOM, 0, PixelFormat.formatDipToPx(this, 70));
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(view);
toast.show();
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@null" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24dp" android:layout_marginRight="24dp" android:background="@drawable/book_reading_toast_bg" android:gravity="center" android:orientation="vertical" android:paddingBottom="37dp" android:paddingTop="39dp" > <TextView android:id="@+id/chapterName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="end" android:gravity="center" android:singleLine="true" android:text="第八百张 鲤鱼跳龙门" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:id="@+id/percentage" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/chapterName" android:layout_centerHorizontal="true" android:layout_marginTop="8dp" android:gravity="center" android:text="45%" android:textColor="#ffffff" android:textSize="16sp" /> </RelativeLayout> </LinearLayout>借助于LInearLayout,把布局撑开,然后借助于里面的RelativeLayout 调整布局参数!打到最终效果!
但是这样还存在一个问题:虽然效果可以一样,但是有时候有些东西在代码中设置比较方便!所以要使用以上代码中的:
PixelFormat.formatDipToPx(this, 70)
我把这个转换的方法也发上来吧:
import android.app.Activity; import android.content.Context; import android.util.DisplayMetrics; /** * 像素转换类 */ public class PixelFormat { /** * 把dip单位转成px单位 * * @param context * context对象 * @param dip * dip数值 * @return */ public static int formatDipToPx(Context context, int dip) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(dm); return (int) Math.ceil(dip * dm.density); } /** * 把px单位转成dip单位 * * @param context * context对象 * @param px * px数值 * @return */ public static int formatPxToDip(Context context, int px) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(dm); return (int) Math.ceil(((px * 160) / dm.densityDpi)); } }
刚才忘记添加那个圆角了,呵呵,现在加上:
book_reading_toast_bg .xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#aa000000" /> <corners android:radius="10dp" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape>
这样就很完美了!
这个是讨论的地址:http://www.apkbus.com/android-83241-1-1.html
如果有问题就问吧,我尽力回答!