<android.support.v7.widget.AppCompatButton
style="@style/MyButton"
...
/>
<style name="MyButton" parent="Widget.AppCompat.Button.Colored">
<item name="backgroundTint">@color/button_background_selector</item>
<item name="android:textColor">@color/button_text_selector</item>
</style>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#555555"/>
<item android:color="#00ff00"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="#888888"/>
<item android:color="#ffffff"/>
</selector>
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
startY = event.getY();
} else if (action == MotionEvent.ACTION_MOVE) {
float y = event.getY();
if(startY-y<-60){
mHeader.setVisibility(View.VISIBLE);
}else if(startY-y>60){
mHeader.setVisibility(View.GONE);
}
}
return false;
}
});
class MyGridAdapter extends BaseAdapter {
Context context;
ArrayList<String> items;
MyGridAdapter(Context context, ArrayList<String> items) {
this.context=context;
this.items=items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int arg0) {
return items.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(93, 93));
imageView.setScaleType(ImageView.ScaleType.CENTER);
} else imageView=(ImageView) convertView;
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
DisplayImageOptions options = new DisplayImageOptions.Builder()
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.cacheInMemory()
.cacheOnDisc()
.build();
imageLoader.displayImage(items.get(position), imageView, options);
return imageView;
}
}
ArrayList<String> items = new ArrayList<String>();
MyGridAdapter adapter = new MyGridAdapter(this, items);
gridView.setAdapter(adapter);
Если у вас нет Looper'a в потоке, то даже без блокировок никаких колбеков вы не получите назад
Скорее всего lock.wait(); блокирует поток и сообщения больше не обрабатываются, поэтому никаких колбеков бы больше не получаете