Añadir efecto de rizado para View en onClick
Hola Estoy tratando de agregar un método onClick de efecto ripple para View, pero este no funciona. Todos mis artículos tienen una identificación, pero no sé cómo llamarla
Aquí hay un código.
- Java cómo manejar "Cast no verificado" para Array <MyItem> desde el objeto
- ¿Fuerza el androide para enviar paquetes UDP inmediatamente?
- En la aplicación de facturación - BillingHelper no completamente instanciado
- Android GoogleMaps V2 MarkerDemo IllegalStateException no incluye puntos
- Diseño lib - CoordinatorLayout / CollapsingToolbarLayout con GridView / listView
@Override public void onClick(View v) { int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); int backgroundResource = typedArray.getResourceId(0, 0); v.setBackgroundResource(backgroundResource); switch (v.getId()) { case ACTION_PLAY_ID: Log.d(MainActivity.TAG, getString(R.string.detail_action_play)); v.setBackgroundResource(backgroundResource); Intent intent = new Intent(getActivity(), PlayerActivity.class); intent.putExtra(Video.VIDEO_TAG, videoModel); startActivity(intent); break; case ACTION_BOOKMARK_ID: if (bookmarked) { v.setBackgroundResource(backgroundResource); deleteFromBookmarks(); ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.star_outline)); } else { v.setBackgroundResource(backgroundResource); addToBookmarks(); ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.star)); } break; case ACTION_REMINDER_ID: if (!isReminderSet) { createReminderDialog((ImageView) v); } else { cancelReminder(liveTvProgram.getProgramId()); ((ImageView) v).setImageDrawable(res.getDrawable(R.drawable.alarm)); } break; } }
Para Lubomir
Tengo algo como esto pero no funciona demasiado:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.item_detail, container, false); ButterKnife.bind(this, view); View myView = view.findViewById(R.id.actions_container); int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); int backgroundResource = typedArray.getResourceId(0, 0); myView.setBackgroundResource(backgroundResource); loadImage(); init(); return view; }
ImageViews (actionbuttons) está creando en java para LinearLayout actions_container
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/header_image" android:layout_width="250dp" android:layout_height="250dp" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:layout_marginStart="10dp" android:layout_marginTop="@dimen/detail_image_1_state" android:elevation="8dp"/> <RelativeLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="@dimen/detail_bottom_margin" android:layout_marginTop="@dimen/detail_top_margin" android:background="@color/primary_color"> <LinearLayout android:id="@+id/actions_container" android:layout_width="match_parent" android:layout_height="@dimen/detail_actions_height" android:layout_alignParentTop="true" android:background="@drawable/ripple_effect_image" android:elevation="2dp" android:orientation="horizontal" android:paddingLeft="300dp" android:paddingStart="300dp"/> <LinearLayout android:id="@+id/content_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/actions_container" android:orientation="vertical" android:paddingLeft="300dp" android:paddingStart="300dp"> <TextView android:id="@+id/title" style="@style/TextTitleStyle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/subtitle" style="@style/TextSubtitleStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> <TextView android:id="@+id/duration" style="@style/TextSubtitleStyle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/season" style="@style/TextDescriptionStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> <TextView android:id="@+id/episode" style="@style/TextDescriptionStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> <TextView android:id="@+id/description" style="@style/TextDescriptionStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="7"/> </LinearLayout> <FrameLayout android:id="@+id/recommended_frame" android:layout_width="match_parent" android:layout_height="200dp" android:layout_alignParentBottom="true"> <android.support.v17.leanback.widget.HorizontalGridView android:id="@+id/recommendation" android:layout_width="match_parent" android:layout_height="wrap_content" android:clipChildren="false" android:clipToPadding="false" android:paddingLeft="10dp" android:paddingRight="10dp"/> </FrameLayout> <TextView android:id="@+id/recommended_text" style="@style/TextHeaderStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/recommended_frame" android:text="@string/related_programs"/> </RelativeLayout> </RelativeLayout>
También mi archivo de efecto ripple xml es como:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/dark_primary_color"> <item> <color android:color="@color/dark_primary_color" /> </item> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple>
- ¿Hay alguna diferencia entre Base64.encodeBase64 de Apache y Base64.encode de Android con el indicador Base64.Default?
- Entender la clase R en Android
- La aplicación de Android con Facebook no funciona con la aplicación de Facebook instalada
- Android java regex coinciden con todos menos un carácter
- Consulta de actualización SQLite Android
- Comportamiento anormal al usar proguard
- Cómo afirmar dentro de un RecyclerView en Espresso?
- Acceder directamente a los campos estáticos en lugar de llamar a un método getter estático, ¿es más rápido?
Vistas con clic
En general, el efecto de rizado para los botones regulares funcionará de forma predeterminada en API 21 y para otras vistas con capacidad de tocar, se puede lograr especificando
android:background="?android:attr/selectableItemBackground">
En codigo:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); View myView = findViewById(R.id.myView); int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray typedArray = getActivity().obtainStyledAttributes(attrs); int backgroundResource = typedArray.getResourceId(0, 0); myView.setBackgroundResource(backgroundResource); }
Puedes añadir:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:background="@drawable/ripple"/>
Crear ripple fondo
View_background.xml
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/blue" > <item android:drawable="@drawable/view_normal"> </item> </ripple>
View_noraml.xml // esta es la forma en que usted ve aparece en normal
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="@dimen/button_corner"/> <solid android:color="@android:color/transparent"/> <stroke android:width="0.5dp" android:color="@color/white"/> </shape>
Ahora establece el view_background en tu vista
ejemplo
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="120dp" android:foreground="@drawable/view_background" android:clickable="true" android:focusable="true" > <ImageView android:id="@+id/grid_item_imageView" android:layout_width="match_parent" android:layout_height="120dp" android:layout_gravity="center" android:scaleType="centerInside" /> </FrameLayout>
La solución para esto es simple fácil en mi lado.
Aquí está el efecto de la ondulación:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#BFB3F7"> <item android:id="@android:id/mask"> <shape android:shape="oval"> <solid android:color="@color/button_background_color" /> </shape> </item> </ripple>
Y luego en la clase necesito buscar la función setBackground
Entonces necesito declarar un artículo drawable a él. algo como esto:
@Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { v.setBackground(res.getDrawable(R.drawable.ripple_effect_for_buttons)); scrollContainer(false); } else { v.setBackground(null); if (recommendation.getFocusedChild() != null) { scrollContainer(true); } } }
Y YUPII su trabajo
- Android rawquery con cláusula Where dinámica
- Implementación de una gran base de datos con la aplicación de Android