Android——ListView,Toast,dialog小细节

近一个月在做一个小项目,现在总结一下遇到的一些问题,都是小问题只是标记一下,一些小细节。
1.Toast显示问题,开始测试手机是ivvi CK3-01 手机,吐司能正常显示,后来改用魅蓝3s手机问题就出现了,不显示吐司了,查了资料才发现不仅是魅蓝3s手机,之前有华为3c也有这问题,那么问题来了,不知道什么时候就会有什么手机的吐司不显示了,那么很多交互提示信息就不显示了,极度影响用户体验,所以就想到能不能自定义一个Toast,结果大部分是在Toast的基础上更改显示效果,这样根本没有解决问题,后来发现这篇文章http://www.cnblogs.com/andgoo/p/3157691.html
完美解决我的问题,但是有一点点,他没贴上一个style文件,下面直接贴上我改的代码:

package view;

import com.ppl.sxgtqx.R;

import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MyToast {
    private static final int ANIMATION_DURATION = 1000;
    private static final String TAG = "MyToast";
    private int HIDE_DELAY = 5000;
    private View mContainer;
    private int gravity = Gravity.CENTER;
    private TextView mTextView;
    private Handler mHandler;
    private AlphaAnimation mFadeInAnimation;
    private AlphaAnimation mFadeOutAnimation;

    public MyToast(Context context,int hIDE_DELAY, int gravity) {
        super();
        ViewGroup container = (ViewGroup) ((Activity) context)
                .findViewById(android.R.id.content);
        View v = ((Activity) context).getLayoutInflater().inflate(
                R.layout.my_toast, container);
        HIDE_DELAY = hIDE_DELAY;
        this.gravity = gravity;
        init(v);
    }
    private void init(View v) {
        mContainer = v.findViewById(R.id.mbContainer);
        mContainer.setVisibility(View.GONE);
        mTextView = (TextView) v.findViewById(R.id.mbMessage);
        mFadeInAnimation = new AlphaAnimation(0.0f, 1.0f);
        mFadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);
        mFadeOutAnimation.setDuration(ANIMATION_DURATION);
        mFadeOutAnimation
                .setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        mContainer.setVisibility(View.GONE);
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {
                    }
                });

        mHandler = new Handler();

    }

    public void show(String message) {
        mContainer.setVisibility(View.VISIBLE);
        Log.e(TAG, "set Visible");
        ((LinearLayout) mContainer).setGravity(gravity
                | Gravity.CENTER_VERTICAL);
        Log.e(TAG, "set gravity");
        mTextView.setText(message);
        Log.e(TAG, "set setText");

        mFadeInAnimation.setDuration(ANIMATION_DURATION);
        mContainer.startAnimation(mFadeInAnimation);
        mHandler.postDelayed(mHideRunnable, HIDE_DELAY);
    }

    private final Runnable mHideRunnable = new Runnable() {
        @Override
        public void run() {
            mContainer.startAnimation(mFadeOutAnimation);
        }
    };
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical"
    android:orientation="horizontal" >
    <ImageView 
        android:id="@+id/iv_item_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="25dp"
        android:background="@android:color/transparent"/>
    <LinearLayout 
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="vertical">
        <TextView 
            android:id="@+id/tv_item_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/show_conn"
            android:textColor="@color/black"
            />
        <TextView 
            android:id="@+id/tv_item_conn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/ed_sub_info"
            android:textColor="@color/gray_light"/>
    </LinearLayout>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid 
        android:color="#B0000000"/>
    <corners 
        android:radius="8px"
        />
    <stroke android:color="#B0000000" android:width="1px"/>
    <padding 
        android:top="2dp"
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"/>

</shape>

ok,Toast就mark到这,接下来ListView
2.ListView
(1)item没含有button类控件 onItemClick冲突
解决方法
(2)当绑定数据变化时,notify后数据没响应,可能的原因绑定的data = new 数据,尽量不要这样,可以让data.clear 然后add(query)数据。
(3)响应item内部控件的点击事件,
解决方法
ok,ListView也mark到这了,接下来Dialog。
3.Dialog,有时用系统自带的dialog总觉得不好看,所以要自定义了,我一般用两种方法:一,定义一个Activity类,在XML中设置其style dialog,二,在dialog中引入XML文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值