मैं एंड्रॉइड देव के लिए नया हूं, और मैं बिना किसी सफलता के एक छवि दृश्य में अच्छे और चिकनी गोलाकार कोनों को जोड़ने के लिए कुछ घंटों की कोशिश कर रहा हूं।एंड्रॉइड छवि दृश्य पर एंटीअलाइज्ड गोलाकार कोनों
पहली चीज मैंने कोशिश की है कि मेरी छवियों के कोनों को सीधे गोल करना है, लेकिन यह बिटमैप को बदलने का तात्पर्य है, और चूंकि मुझे कच्चे रखने की जरूरत है, और ये बहुत बड़े हैं, यह वास्तव में स्मृति अनुकूल नहीं है। यह मेरी छवि दृश्य तरल पदार्थ के बाद से अन्य कठिनाइयों का भी कारण बन जाएगा।
दूसरी बात जो मैंने उपयोग करने की कोशिश की वह क्लिपपैथ विधि है जो मेरे दृश्य को उपclassing के बाद है। यह काम करता है, लेकिन कोनों को एलियाड किया जाता है। मैंने एलियासिंग को लागू करने के लिए एक पेंटफ्लैग ड्रॉफिल्टर जोड़ने की कोशिश की, लेकिन यह काम नहीं किया। मैं मोनोड्रॉइड का उपयोग कर रहा हूं, और मैं सोच रहा था कि यह जावा में काम करना था।
public class MyImageView : ImageView
{
private float[] roundedCorner;
/**
* Contains the rounded corners for the view.
* You can define one, four or height values.
* This behaves as the css border-radius property
*
* @see http://developer.android.com/reference/android/graphics/Path.html#addRoundRect(android.graphics.RectF, float[], android.graphics.Path.Direction)
*/
public float[] RoundedCorners{
get{
return roundedCorner;
}
set{
float[] finalValue = new float[8];
int i=0;
if(value.Length == 1){
for(i=0; i<8;i++){
finalValue[i] = value[0];
}
}else if(value.Length == 4){
for(i=0; i<4;i++){
finalValue[2*i] = value[i];
finalValue[2*i+1] = value[i];
}
}
roundedCorner = finalValue;
}
}
public SquareImageView (Context context) :
base (context)
{
Initialize();
}
public SquareImageView (Context context, IAttributeSet attrs) :
base (context, attrs)
{
Initialize();
}
private void Initialize()
{
RoundedCorners = new float[]{0,0,0,0};
}
public override void Draw (Android.Graphics.Canvas canvas)
{
Path path = new Path();
path.AddRoundRect(new RectF(0,0, Width,Height),RoundedCorners, Path.Direction.Cw);
canvas.ClipPath(path);
base.Draw (canvas);
}
/**
* try to add antialiasing.
*/
protected override void DispatchDraw (Canvas canvas)
{
canvas.DrawFilter = new PaintFlagsDrawFilter((PaintFlags)1, PaintFlags.AntiAlias);
base.DispatchDraw (canvas);
}
}
आपकी मदद के लिए धन्यवाद:
यहाँ मेरी कोड (सी #) है!
आपके उत्तर के लिए धन्यवाद। लेकिन जैसा कि मैंने कहा, मैंने पहले से ही अपनी छवि के कोनों को गोल करने की कोशिश की है, लेकिन चूंकि मुझे द्रव आकार बिटमैप की आवश्यकता है, इसलिए इसका मतलब मूल के संदर्भ में है, और मैं इससे बचना चाहता हूं। असल में मैं दृश्य के कोनों को गोल करना चाहता हूं, जैसे कि मैं इस समाधान का उपयोग कर रहा था: [लिंक] (http://stackoverflow.com/questions/1683185/android-listview-with-rounded-corners) –
ठीक @Alex इसे देखें [लिंक] (http://stackoverflow.com/questions/6539781/android-imageview-with-rounded-corners-not-working) –