Добавить мигание в настроенный элемент списка?

Я создал список, содержащий несколько элементов, и я добавил границу для этих элементов, чтобы он выглядел следующим образом:

Введите описание изображения здесь

Из-за этой настраиваемой границы первоначальный мигание элемента блокируется, поэтому он не появляется, и я попытался добавить мигание через анимацию, но есть слишком много задержек и слишком много работы над основным потоком, я также использовал анимацию Внутри, но это то же самое, что и в случае с задержкой, что заставляет меня забыть об анимации, так что все равно я могу заставить элемент мигать, когда его щелкают, не используя анимацию или используя ее, но эффективно и, кстати, я Используемую onItemClickListener анимацию внутри моего onItemClickListener вы можете найти в коде ниже: onItemClickListener который обрабатывает мигание:

 dataList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, final View arg1, final int arg2, long arg3) { // TODO Auto-generated method stub tvWarningNoEmp.setVisibility(View.GONE); // adding blink final Animation animation = new AlphaAnimation( 1, 0); // Change // alpha // from // fully // visible // to // invisible animation.setDuration(100); // duration - half a // second animation .setInterpolator(new LinearInterpolator()); // do // not // alter // animation // rate animation.setRepeatCount(Animation.INFINITE); // Repeat // animation // infinitely animation.setRepeatMode(Animation.REVERSE); arg1.startAnimation(animation); // blink one time timer new CountDownTimer(100, 100) {// CountDownTimer(edittext1.getText()+edittext2.getText()) // also parse it to long public void onTick(long millisUntilFinished) { // here you can have your logic to set text to // edittext } public void onFinish() { arg1.clearAnimation(); } }.start(); // set margins for tickets buttons LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.setMargins(0, 0, 30, 0); bAssign.setLayoutParams(params); LinearLayout.LayoutParams paramsO = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); paramsO.setMargins(110, 0, 0, 0); bEmpChat.setLayoutParams(paramsO); noEmpLayout.setVisibility(LinearLayout.GONE); empLayout.setVisibility(LinearLayout.VISIBLE); Employee item = adapter.getItem(arg2); ivEmpIcon.setBackgroundResource(R.drawable.free); tvEmpName.setText(" " + item.getEmpName()); tvEmpDetails.setText(" " + item.getEmpDetails()); empLongitude = item.getEmpLongitude(); empLatitude = item.getEmpLatitude(); CameraPosition cameraPosition = new CameraPosition.Builder() .target(new LatLng(empLatitude, empLongitude)) .zoom(15).build(); googleEmpMap.animateCamera(CameraUpdateFactory .newCameraPosition(cameraPosition)); MarkerOptions marker = new MarkerOptions().position( new LatLng(empLatitude, empLongitude)).title( tvEmpName.getText().toString()); marker.icon(BitmapDescriptorFactory .defaultMarker(BitmapDescriptorFactory.HUE_RED)); googleEmpMap.addMarker(marker); // based on item add info to intent // hide button directions bEmpDirections.setVisibility(View.GONE); // current address Geocoder geocoder; List<Address> addresses; geocoder = new Geocoder(getApplicationContext(), Locale .getDefault()); try { addresses = geocoder.getFromLocation(empLatitude, empLongitude, 1); String street = addresses.get(0).getAddressLine(0); String state = addresses.get(0).getAdminArea(); String country = addresses.get(0).getCountryName(); tvEmpCurrentAdd.setText(" " + country + "-" + state + "-" + street + " st."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();} } }); 

Макет ListView:

 <?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:background="@drawable/redborder" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/btnBack" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:background="@drawable/back" /> <TextView android:id="@+id/tvWarningNoEmp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="choose an employee from here to assign this problem to!" android:textColor="#FF0000" android:layout_marginLeft="400dp" android:visibility="gone"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="40dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_weight="2" android:background="@drawable/pepsiborder" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="@drawable/blueborder" android:orientation="horizontal" android:padding="10dp" > <ImageView android:id="@+id/TicketIcon" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center_vertical" android:layout_weight="0.1" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.7" android:gravity="center_vertical" android:orientation="vertical" > <TextView android:id="@+id/ticketCat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="7dp" android:gravity="center_vertical" android:textColor="#D3D9FF" android:textSize="17sp" /> </LinearLayout> </LinearLayout> <fragment android:id="@+id/ticketMap" android:name="com.google.android.gms.maps.MapFragment" android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" /> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="State:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#D3D9FF" /> <TextView android:id="@+id/ticketState" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textColor="#D3D9FF" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ticket No:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#D3D9FF" /> <TextView android:id="@+id/ticketNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textColor="#D3D9FF" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Report Date:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#D3D9FF" /> <TextView android:id="@+id/ticketReportDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textColor="#D3D9FF" /> </LinearLayout> <TextView android:id="@+id/textView13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Details:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#D3D9FF" /> <TextView android:id="@+id/ticketDetails" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textColor="#D3D9FF" /> </LinearLayout> </ScrollView> <LinearLayout android:id="@+id/llBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginBottom="10dp" android:layout_marginTop="170dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@drawable/blueborder" android:orientation="horizontal" android:padding="10dp" > <Button android:id="@+id/btnTicketDirections" android:layout_width="match_parent" android:layout_height="30dp" android:layout_weight="1" android:background="@drawable/directions" /> <Button android:id="@+id/btnSolve" android:layout_width="match_parent" android:layout_height="30dp" android:layout_weight="1" android:background="@drawable/solve" /> <Button android:id="@+id/btnOther" android:layout_width="match_parent" android:layout_height="30dp" android:layout_weight="1" android:background="@drawable/other" /> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/llListView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="40dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_weight="2" android:background="@drawable/pepsiborder" android:orientation="vertical" > <TextView android:id="@+id/textView124" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#D3D9FF" android:text="Free Employees" android:textSize="30sp" android:gravity="left" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_marginLeft="20dp" > <ListView android:id="@+id/listTic" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="5dp" android:layout_marginTop="20dp" android:divider="@android:color/transparent" android:dividerHeight="10dp" > </ListView> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_weight="2" android:id="@+id/noempLayout" android:background="@android:color/transparent" android:orientation="vertical" > <TextView android:text="Please select free Employee to handle this problem!" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:layout_marginTop="300dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="40dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_weight="2" android:id="@+id/empLayout" android:background="@drawable/pepsiborder" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="@drawable/blueborder" android:orientation="horizontal" android:padding="10dp" > <ImageView android:id="@+id/empIcon" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center_vertical" android:layout_weight="0.1" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="0.7" android:gravity="center_vertical" android:orientation="vertical" > <TextView android:id="@+id/empName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="7dp" android:gravity="center_vertical" android:textColor="#D3D9FF" android:textSize="17sp" /> </LinearLayout> </LinearLayout> <fragment android:id="@+id/empMap" android:name="com.google.android.gms.maps.MapFragment" android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView33" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Current Address:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#D3D9FF" /> <TextView android:id="@+id/empAddress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textColor="#D3D9FF" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView22" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Details:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#D3D9FF" /> <TextView android:id="@+id/empDetails" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textColor="#D3D9FF" /> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/llBtn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginTop="220dp" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@drawable/blueborder" android:orientation="horizontal" android:padding="10dp" > <Button android:id="@+id/btnEmpDirections" android:layout_width="30dp" android:layout_height="30dp" android:layout_weight="1" android:layout_gravity="center" android:background="@drawable/directions" /> <Button android:id="@+id/btnEmpChat" android:layout_width="30dp" android:layout_height="30dp" android:layout_weight="1" android:layout_gravity="center" android:background="@drawable/chat" /> <Button android:id="@+id/btnEmpAssign" android:layout_width="30dp" android:layout_height="30dp" android:layout_weight="1" android:layout_gravity="center" android:background="@drawable/assign" /> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> 

Элемент списка ListView:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="280dp" android:layout_height="90dp" android:orientation="horizontal" android:background="@drawable/border" android:layout_marginTop="10dp" android:padding="10dp" > <ImageView android:id="@+id/imgIcon" android:layout_width="60dp" android:layout_height="60dp" android:layout_weight="0.1" android:gravity="center_vertical" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="0.7" android:gravity="center_vertical" > <TextView android:id="@+id/txtTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:textSize="17sp" android:textColor="#D3D9FF" android:layout_gravity="center_vertical" android:layout_marginLeft="7dp" /> <TextView android:id="@+id/txtTitle1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_gravity="center_vertical" android:textSize="13sp" android:textColor="#D3D9FF" android:layout_marginLeft="7dp" /> </LinearLayout> </LinearLayout> 

Border.xml:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <stroke android:width="2dip" android:color="#8D8D8D" /> <corners android:radius="10dip"/> <solid android:color="#464A4F" /> </shape> 

Любая помощь действительно оценена.

Solutions Collecting From Web of "Добавить мигание в настроенный элемент списка?"

Если вы хотите, чтобы вид мигал:

 public void blink(final View v) { v.setBackgroundColor(Color.DKGRAY); v.animate().setDuration(25).alpha(0).withEndAction(new Runnable() { @Override public void run() { v.setBackgroundResource(R.drawable.standard_key_normal); v.setAlpha(1); } }); } 

Отправьте свой вид на эту функцию, замените фон любым доступным ресурсом или цветным ресурсом. Если вы хотите, чтобы несколько миганий помещали его в цикл for.

Хорошо, я выясняю, как уменьшить задержку и добавить эффект blink без использования анимации, и некоторые из них, как это работает для меня, и нет никакой задержки, что я сделал, это то, что я изменил линейные макеты списка на относительные, и это уменьшило количество Вложенные макеты значительно, тогда я добавил этот метод:

 private void blink(final View v){ final Handler handler = new Handler(); new Thread(new Runnable() { @Override public void run() { int timeToBlink = 1000; //in milissegunds try{Thread.sleep(timeToBlink);}catch (Exception e) {} handler.post(new Runnable() { @Override public void run() { if(v == View.VISIBLE){ v.setVisibility(View.INVISIBLE); }else{ v.setVisibility(View.VISIBLE); } blink(); } }); } }).start(); 

onItemClickListener() я использовал его внутри onItemClickListener() -> blink(arg1); Работал отлично для меня, также получение текущего адреса было слишком много, поэтому я использовал Async, так что теперь нет никакой задержки: Async используется как внутренний класс:

 private class LongOperation extends AsyncTask<String, Void, String> { String all; @Override protected String doInBackground(String... params) { // current address Geocoder geocoder; List<Address> addresses; geocoder = new Geocoder(getApplicationContext(), Locale .getDefault()); try { addresses = geocoder.getFromLocation(empLatitude, empLongitude, 1); String street = addresses.get(0).getAddressLine(0); String state = addresses.get(0).getAdminArea(); String country = addresses.get(0).getCountryName(); all="" + country + "-" + state + "-" + street + " st."; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace();} return all; } @Override protected void onPostExecute(String result) { tvEmpCurrentAdd.setText(all); } @Override protected void onPreExecute() {} @Override protected void onProgressUpdate(Void... values) {} } 

А затем я назвал его внутри onItemClickListener : new LongOperation().execute() ; Надеюсь, что это поможет другим, у кого возникли проблемы.